(1)快速构建项目;
(2)对主流开发框架的无配置集成;
(3)项目可独立运行,无需外部依赖Servlet容器;
(4)提供运行时的应用监控;
(5)极大的提高了开发和部署效率;
(6)与云计算的天然集成。
1.独立运行的spring项目*
Spring Boot可以以jar的形式独立运行,运行一个Spring Boot项目只需要通过 java -jar xxx.jar命令来运行。
2. 内嵌servlet容器
Spring Boot可以选择内嵌Tomcat,Jetty或者Udertow,这样我们不需要以war的形式部署项目。
3. 提供starter简化maven配置
Spring 提供一系列starter pom来简化maven的依赖加载。比如加入spring-boot-starter-web。
org.springframework.boot
spring-boot-starter-web
Spring Boot会自动加入Tomcat和Spring MVC的依赖。
4.自动配置Spring
Spring boot会根据在类路径中的jar,类。为jar包里的类自动配置bean,这样极大减少我们要是用的配置。当然并不是所有的场景都是这样,有时候还是需要去自定义配置的。
5.准生产的应用监控
Spring Boot提供了基于http,ssh,telnet对运行时的项目进行监控。
6.无代码生成和xml配置
Spring4.x提倡java配置和注解配置组合,二Spring Boot不需要任何xml即可实现spring配置。
1.基本配置
(1)入口类和@SpringBootApplication
SpringBoot通常有一个名为*Application.java的入口类,入口类里面有一个main方法,这个main方法其实就是一个标准的Java应用的main方法,也是启动SpringBoot的方法。
@SpringBootApplication是SpringBoot的核心注解,它是一个核心注解
其中@EnableAutoconfiguration让Spring Boot根据类路径中的jar包依赖为当前项目进行自动配置。
例如添加了spring-boot-starter-web依赖,会自动添加Tomcat和Spring MVC的依赖,那么Spring Boot会对Tomcat和SpringMVC进行自动配置。
例如添加了spring-boot-starter-data-jpa依赖,SpringBoot会自动进行JPA相关的配置。
SpringBoot会自动扫描@SpringBootApplication所在类的同级包以及下级包里的bean.
(2)关闭特定的自动配置
关闭特定的自动配置使用@SpringBootApplication注解的exclude参数,例如
@SpringBootApplication(exclude={DataSourceAutoConfiguration.class})
2.Spring Boot的配置文件
Spring Boot使用一个全局的配置文件application.properties或者application.yml放置在src/main/resources文件下或类路径的/config下。
Spring 不仅支持常规的.properties配置文件,还支持yaml的配置文件,yaml是以数据为中心的语言,在配置数据的时候具有面向对象特征。
Spring Boot的全局配置文件的作用是对一些默认配置的配置值进行修改。
(1)示例
将tamcat默认的8080端口改为9090,并将默认的访问路径”/”修改为”/helloSpringBoot”;
#不配置默认为8080端口
server.port=9090
#将默认的访问路径"/"修改为"/helloSpringBoot"
server.contextPath=/helloSpringBoot
3.starter pom
SpringBoot为我们提供了简化企业级开发绝大多数场景的starter pom,只要使用了场景需要的starter pom,SpringBoot会自动配置bean。
比如之前说的添加了spring-boot-starter-web依赖,会自动添加Tomcat和Spring MVC的依赖,那么Spring Boot会对Tomcat和SpringMVC进行自动配置。
pom.xml:
org.springframework.boot
spring-boot-starter-web
官方提供的starter pom :
使用xml配置
SpringBoot提倡零配置,即无XML配置,但是在实际开发过程中,可能一些特殊的要求你必须使用xml配置,这时我们可以使用SpringBoot提供的@ImportResource来加载xml配置。
例如:
@ImportResource({"classpath:some-content.xml","classpath:another-content.xml"})
(1)@RestController和@Controller指定一个类,作为控制器的注解 ,并说明其区别
(2)@RequestMapping方法级别的映射注解,这一个用过Spring MVC的小伙伴相信都很熟悉
(3)@EnableAutoConfiguration和@SpringBootApplication是类级别的注解,根据maven依赖的jar来自动猜测完成正确的spring的对应配置,只要引入了spring-boot-starter-web的依赖,默认会自动配置Spring MVC和tomcat容器
(4)@Configuration类级别的注解,一般这个注解,我们用来标识main方法所在的类,完成元数据bean的初始化。
(5)@ComponentScan类级别的注解,自动扫描加载所有的Spring组件包括Bean注入,一般用在main方法所在的类上
(6)@ImportResource类级别注解,当我们必须使用一个xml的配置时,使用@ImportResource和@Configuration来标识这个文件资源的类。
(7)@Autowired注解,一般结合@ComponentScan注解,来自动注入一个Service或Dao级别的Bean
(8)@Component类级别注解,用来标识一个组件,比如我自定了一个filter,则需要此注解标识之后,Spring Boot才会正确识别。
SpringBoot使用一个全局的配置文件,配置文件名是固定的;
•application.properties
•application.yml
配置文件的作用:修改SpringBoot自动配置的默认值;
SpringBoot在底层都给我们自动配置好;
YAML(YAML Ain’t Markup Language)
YAML A Markup Language:是一个标记语言
YAML isn’t Markup Language:不是一个标记语言;
标记语言:
以前的配置文件;大多都使用的是 xxxx.xml文件;
YAML:以数据为中心,比json、xml等更适合做配置文件;
配置例子:
YAML:
server:
port: 8081
XML:
8081
YAML语法:
(1)基本语法
k:(空格)v:表示一对键值对(空格必须有);
以空格的缩进来控制层级关系;只要是左对齐的一列数据,都是同一个层级的
server:
port: 8081
path: /hello
属性和值也是大小写敏感;
(2)值的写法
字面量:普通的值(数字,字符串,布尔)
k: v:字面直接来写;
字符串默认不用加上单引号或者双引号;
“”:双引号;不会转义字符串里面的特殊字符;特殊字符会作为本身想表示的意思
name: “zhangsan \n lisi”:输出;zhangsan 换行 lisi
‘’:单引号;会转义特殊字符,特殊字符最终只是一个普通的字符串数据
name: ‘zhangsan \n lisi’:输出;zhangsan \n lisi
对象、Map(属性和值)(键值对):
k: v:在下一行来写对象的属性和值的关系;注意缩进
对象还是k: v的方式
friends:
lastName: zhangsan
age: 20
行内写法:
friends: {lastName: zhangsan,age: 18}
数组(List、Set):
用- 值表示数组中的一个元素
pets:
‐ cat
‐ dog
‐ pig
行内写法
pets: [cat,dog,pig]