第七章 Spring-Boot框架
第七章 Spring-Boot框架
1. 对SpringBoot框架的理解
Spring Boot旨在简化基于Spring的应用开发,提供以下核心功能:
- Starter起步依赖:提供一系列封装了常用依赖配置的starter,简化项目依赖管理。
- 自动配置:依据环境条件(如是否引入特定依赖、配置项是否存在等)自动创建和配置Bean。
- Jar包方式运行:内嵌Web服务器(如Tomcat),使应用可以打包成可执行的JAR文件直接运行。
2. 常见的Spring Boot Starter
- 官方Starter:命名规则为
spring-boot-starter-xxxx
,例如spring-boot-starter-web
用于Web开发支持。 - 第三方Starter:遵循
xxxx-spring-boot-starter
命名模式,如mybatis-spring-boot-starter
提供MyBatis支持。
常见Starter包括但不限于:
spring-boot-starter-web
spring-boot-starter-aop
spring-boot-starter-data-redis
spring-boot-starter-data-elasticsearch
spring-boot-starter-amqp
spring-boot-starter-data-mongodb
3. Spring Boot配置优先级
配置优先级从高到低排序如下:
- 命令行参数:例如
--server.port=10010
- Java系统属性:例如
-Dserver.port=9001
- application.properties
- application.yml
- application.yaml
外部配置(命令行参数和Java系统属性)优先级高于内部配置文件。
4. Spring Boot自动配置原理
自动配置的核心在于@EnableAutoConfiguration
注解,它通过@Import
导入一个实现了ImportSelector
接口的选择器。此选择器读取classpath下META-INF/spring.factories
或新的XXxxxSpringAutoConfiguration.imports
文件中的自动配置类,并根据条件注解(如@ConditionalOnClass
)决定是否加载这些配置类。
在Spring Boot 3.0之后,自动配置类不再通过spring.factories
声明,而是使用新的配置文件。
5. 如何自定义Starter
创建自定义Starter通常需要两个模块:
- xxx-spring-boot-starter:管理依赖关系。
- xxx-spring-boot-autoconfigure:实现自动配置逻辑。
自动配置模块实现步骤:
- 编写自动配置类:使用
@Configuration
和@Bean
注解定义Bean,并可通过@Conditional
系列注解控制Bean的加载条件。 - 配置自动配置类:在
META-INF/spring.factories
(对于Spring Boot 2.x及之前版本)或新的META-INF/spring/xx.SpringAutoConfiguration.imports
(对于Spring Boot 3.x及以上版本)中注册自动配置类。
完成上述步骤后,自定义Starter即可被其他项目引入并使用。