SpringBoot核心简述
同SpringMVC相比,SpringBoot体现出来的核心理念为"约定优于配置"。而实践这一核心的要素就是各类starter。
一,主要Module
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
二,Starter实现的主要方式
一是声明依赖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個,截取部分