目录
1. Spring Boot是什么
Spring的子项目,引导(Boot)Spring。可借助各种Starter启动器,快速配置Spring项目,避免繁重的配置。大势所趋,大量的开源项目都实现了其Starter启动器。
2. 优点
- 易上手
- 开箱即用,无需繁琐配置
- 提供大型项目通用的非业务性功能,例如:内嵌服务器、安全管理、运行数据监控、运行状况检查和外部化配置等
- 已集成依赖,避免了大量Maven 导入和各种版本冲突
3. 核心注解及其构成
@SpringBootApplication,主要由@EnableAutoConfiguration、@ComponentScan、@SpringBootConfiguration构成。分别是启动自动配置、Spring组件扫描、标注当前类是配置类。
4. 谈谈JavaConfig
Spring JavaConfig是Spring社区的产品,提供了配置 Spring IOC容器的纯Java 方法,避免XML配置 。优点有:
- 纯java代码,具备复用、继承、多态等特性(例如一个配置类可以继承另一个,重写它的@Bean 方法)
- 更自由地控制bean的初始化、注入以及复杂对象的构建
- 类型安全和重构友好。因Java 5.0对泛型的支持,现在可按类型而非名称检索 bean。
5. 自动配置的原理
关键在@SpringBootApplication的@EnableAutoConfiguration。该注解引入AutoConfigurationImportSelector,在ConfigurationClassParser解析配置类时,就会调用其selectImports方法,进而从META-INF/spring.factories里筛选有效的自动配置类,每一个自动配置类结合对应的xxxProperties.java读取配置文件进行自动配置功能。(详见自定义starter的编写自动配置类、常见注解的@EbableAutoConfiguration、启动流程的SpringFactoriesLoader)
6. 各种配置方式的加载顺序
2.3.3版本官网给出了顺序:
高优先级的配置覆盖低优先级的配置
7. 用YAML优缺点
YAML:"Yet Another Markup Language"
好处:
- 结构化,简洁
- 配置有序
- 支持容器
坏处:
- 不支持 @PropertySource 注解导入自定义的 YAML 配置