@SpringBootApplication 原理及核心源码解读
2022-04-24 01:12:59 0 举报
登录查看完整内容
作者其他创作
大纲/内容
解读: @SpringBootConfiguration : SpringBoot 的配置类,标注在某个类上,表示这是一个 SpringBoot的配置类。
@SpringBootConfiguration
解读:AutoConfigurationPackages.Registrar这个类就干一个事,注册一个 Bean ,这个 Bean 就是org.springframework.boot.autoconfigure.AutoConfigurationPackages.BasePackages ,它有一个参数,这个参数是使用了 @AutoConfigurationPackage 这个注解的类所在的包路径
核心:@Import(AutoConfigurationPackages.Registrar.class)
Registrar 类中 registerBeanDefinitions 方法
Registrar 类中 register方法
@AutoConfigurationPackage
解读:AutoConfigurationImportSelector 可以帮助 Springboot 应用将所有符合条件的 @Configuration配置都加载到当前 SpringBoot 创建并使用的 IOC 容器( ApplicationContext )中。重点是实现了 DeferredImportSelector 接口
解读【1】:this.group.process 主要做的事情就是在 this.group 即AutoConfigurationGroup 对象的 process 方法中,传入的 AutoConfigurationImportSelector对象来选择一些符合条件的自动配置类,过滤掉一些不符合条件的自动配置类
解读【2】:this.group.selectImports的方法主要是针对前面的process方法处理后的自动配置类再进一步有选择的选择导入
入口:DeferredImportSelectorGrouping getImports方法
解读【1】从 spring.factories 配置文件中加载 EnableAutoConfiguration 自动配置类)
解读【2】 若 @EnableAutoConfiguration 等注解标有要 exclude 的自动配置类,那么再将这个自动配置类排除掉;
解读【4】经过重重过滤后,此时再触发 AutoConfigurationImportEvent 事件,告诉ConditionEvaluationReport 条件评估报告器对象来记录符合条件的自动配置类;
解读【5】最后spring再将最后筛选后的自动配置类导入IOC容器中
【1】AutoConfigurationGroup getAutoConfigurationEntry 方法
核心逻辑 :AutoConfigurationGroup process方法
SpringBoot自动配置模块
自动配置部分源码解读
@Import(AutoConfigurationImportSelector.class)
@EnableAutoConfiguration
解读:主要是从定义的扫描路径中,找出标识了需要装配的类自动装配到spring 的bean容器中。
basePackages、value:指定扫描路径
basePackageClasses:指定具体扫描的类
excludeFilters:指定排除Filter条件的类
includeFilters:指定满足Filter条件的类
常用属性
@ComponentScan
@SpringBootApplication
收藏
收藏
0 条评论
回复 删除
下一页