Spring Boot 框架的优点:
Spring Boot特点:
- Spring Boot
提供了一些预先组织好的“起步依赖(spring-boot-starter)”,从而使开发者不再需要维护复杂的组件(jar包)依赖,只需要声明“我需要什么功能”就可以。 - Spring Boot让Spring应用开发从早期的以“组件为中心”,转换为“以功能为中心”
- Spring Boot在应用程序中嵌入了Servlet容器(Tomcat、Jetty或Underyow),可独立运行,无需部署到外部胡Servlet容器中。
- Spring Boot 2.X还提供了支持响应编程特性的容器(默认为Netty),因此,它的应用就是一个Jar包,可以直接使用java-jar命令运行。
- Spring Boot 2.X只支持JDK 8及以上版本。
- Spring Boot提供国一整套工具 --Spring Boot Actuator,用于监控Spring Boot 应用程序运行状态。
- Spring技术家庭的其他成员(比如:Spring MVC),基本上都针对Spring Boot进行了调整或重写,并且增加了新的成员,比如WebFlux。
- Spring Boot还是Spring Cloud技术的基础,单个的微服务可以使用Spring Boot开发。
Spring Boot优点:
- 快速构建项目。
- 对主流开发框架的无配置集成。
- 项目可独立运行,无需外部依赖Servlet容器。
- 提供运行时的应用监控。
- 极大的提高了开发、部署效率。 与云计算的天然集成。
- 内置Tomcat和Jetty容器。
- 提供一个Starter Poms来简化Maven配置。
- 提供一系列大型项目中常见的非功能性特性,如安全、指标、健康指标、外部配置等。
Spring Boot 的主要执行流程:
- 初始化Spring Application实例
- 初始化Spring Boot项目启动
Spring Boot 自动配置的原理:
Spring Boot基础配置:
加在项目启动类上,组合以下注解:
- @SpringBootConfiguration:表明这是个配置类,开发者可以在这个类中配置Bean,类似Spring中的applicationContext.xml的角色
- @EnableAutoConfiguration:开启自动化配置,开发者可以使用自定义配置代替自动化配置的任意配置,所以它是非侵入式的
- @ComponentScan:完成包扫描,默认扫描位置的类都位于当前类所在的包下面,所以项目启动类务必放在根包中,否则可能出现扫描不到的情况。
代码片
@Target({ElementType.TYPE})
@Retention(RetentionPolicy.RUNTIME)
@Documented
@Inherited
@SpringBootConfiguration
@EnableAutoConfiguration
@ComponentScan(
excludeFilters = {@Filter(
type = FilterType.CUSTOM,
classes = {TypeExcludeFilter.class}
), @Filter(
type = FilterType.CUSTOM,
classes = {AutoConfigurationExcludeFilter.class}
)}
)
其他Web服务器配置:
Spring Boot 默认使用内嵌的Tomcat服务器,若使用其它web服务器,则需要排除Tomcat服务器,加入其它服务器的依赖。
代码片
<properties>
<java.version>1.8</java.version>
</properties>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-devtools</artifactId>
<scope>runtime</scope>
<optional>true</optional>
</dependency>
properties配置:
Spring Boot 项目的application.properties配置文件可以出现如下4个位置:
- 项目根目录的config文件夹
- 项目根目录
- classpath的config文件夹
- classpath(默认使用)
Spring配置原理:
- Spring Boot应用是可以编写多个配置类,使用@configuration标识;
- SpringBoot会将其汇集起来构建出一个完整的运行时环境。