SpringBoot 学习
什么是 Springboot
Spring Boot 是 Spring 提供的一个子项目,用于快速构建 Spring 应用程序
传统的问题:
- 导入依赖繁琐
- 项目配置繁琐
SpringBoot 的特性
- 起步依赖:整合所有 web 的依赖配置好了
- 自动配置:bean 对象自动注入到 ioc 容器
配置文件
-
properties 配置文件
-
yaml 配置文件(一般使用)
- 三方技术配置信息
- 自定义配置信息
-
yml 配置信息的关联
-
@Value 方式
-
ConfigurationProperties 方式
-
整合 MyBatis
-
一般的服务架构
-
@Autowired: https://cloud.tencent.com/developer/article/1897255
Bean 管理
-
扫描
- 标签
- 注解:@ComponetScan
-
注册
- 内置
- 外部
- @Bean
- @Import
-
导入配置类
- 导入 ImportSelector 接口类实现(依赖第一种)
-
@EnableXxxx 注解,封装 @Import 注解(其实都是 Java 语法)
-
- 内置
-
条件
自动配置原理
-
自动配置
遵循约定大约配置的原则,在 springboot 程序启动后,起步依赖中的一些 bean 对象会自动注入到 ioc 容器
-
源码分析
-
原理解释
- 在主启动类上添加了 SpringBootApplication 注解,这个注解组合了 EnableAutoConfiguration 注解
- EnableAutoConfiguration 注解又组合了 Import 注解,导入了 AutoConfigurationlmportSelector 类
- AutoConfigurationlmportSelector 类实现 selectlmports 方法,这个方法经过层层调用,最终会读取 META-INF 目录下的后缀名为 imports 的文件。当然了,boot2.7 以前的版本,读取的是 spring.factories 文件
- 读取到全类名了之后,会解析注册条件,也就是 @Conditional 及其行生注解把满足注册条件的 Bean 对象自动注入到 I0C 容器中
自定义 starter
- 创建 mybatis-spring-boot-autoconfigure 模块,提供自动配置功能,并自定义配置文件 META-INF/spring/xxx.imports
- 创建 mybatis-spring-boot-starter 模块,在 starter 中引入自动配置模块