同springmvc相比,springboot体现出来的核心理念为"约定优于配置"。而实践这一核心的要素就是各类starter。
spring-boot 核心工程
spring-boot-starters 启动服务工程
spring-boot-autoconfigure 自动配置的核心工程 负责加载注入spring.factories下的配置starters
spring-boot-actotor 提供应用监控类功能,如endpoints(应用状态监控), healthindicator(应用健康监控)等
spring-boot-tools 常用工具集,如spring-boot-maven-plugin
spring-boot-cli 命令行交互工具
核心工程为: spring-boot, spring-boot-autoconfigure
一是声明依赖jar包,二是在依赖jar包中提供autoconfiguration类,实现自动加载属性。
1,starter
springboot官方推荐使用starter提供一个spring.providers文件,用来声明当前starter所依赖的jar包。
例如,spring-boot-starter-web的spring.providers文件为,
provides: spring-webmvc,spring-web
即,分别提供mvc和web的功能。
2,xxxautoconfiguration的注解解读
a, conditionalonxxx条件注解
比如conditionalonwebapplication 当前为webapplication才创建bean
conditionalonmissingbean(b.class) 当前指定的b对象不存在才创建。
b,enableconfigurationproperties(xproperties.class) 使用xproperties获得application.properties的实现
c, import(yconfiguration.class, zconfiguration.class)导入y,z 配置类
d, configuration 基本配置注入属性。
e,在 resources/meta-inf下创建一个名为spring.factories的文件,该文件将告知spring-boot,需要自动配置的属性类
3, springapplication.run所经过的自动配置属性注入
1)refreshcontext:refresh:
2)invokebeanfactorypostprocessors:invokebeanfactorypostprocessors
3)invokebeandefinitionregistrypostprocessors:
4)postprocessbeandefinitionregistry:processconfigbeandefinitions
5)parse:processdeferredimportselectors
6)getimports:process:selectimports:
7)getcandidateconfigurations
8)loadfactorynames
code :
configurations:共180個,截取部分
墨匠