SpringBoot自动装配原理
2021-10-29 11:38:07 0 举报
SpringBoot自动装配原理
作者其他创作
大纲/内容
@SpringBootApplication注解包含@EnableAutoConfiguration
该接口主要是为了导入@Configuration的配置项
继承了继承了ImportSelector接口
延期导入@Configuration的配置项
实现了DeferredImportSelector接口
先判断是否进行自动装配
从META-INF/spring-autoconfigure-metadata.properties读取元数据与元数据的相关属性
SpringFactoryiesLoader会读取META-INF/spring.factories下的EnableAutoConfiguration的配置,紧接着在进行排除与过滤,进而得到需要装配的类。最后让所有配置在META-INF/spring.factories下的AutoConfigurationImportListener执行AutoConfigurationImportEvent事件
调用getCandidateConfigurations方法
方法selectImports
①直接填class数组
public class Myclass implements ImportSelector { @Override public String[] selectImports(AnnotationMetadata annotationMetadata) { return new String[]{\"com.yc.Test.TestDemo3\"}; }}
方法返回值: 就是我们实际上要导入到容器中的组件全类名
实现ImportSelector接口,覆盖selectImports方法
②ImportSelector方式
第一个参数annotationMetadata 和之前的ImportSelector参数一样都是表示当前被@Import注解给标注的所有注解信息第二个参数表示用于注册定义一个bean
手动注册bean到容器
和ImportSelector用法相似度80%
③ImportBeanDefinitionRegistrar方式
@import注解的三种用法
@EnableAutoConfiguration下的@import注解(ImportSelector方式)AutoConfigurationImportSelector
调用invokeBeanFactoryPostProcessors(beanFactory)处理BeanFactoryPostProcessor
AbstractApplicationContext的refresh方法
处理@Configuration注解
实现了BeanDefinitionRegistryPostProcessor,间接实现了BeanFactoryPostProcessor
processDeferredImportSelectors方法,在这里将会对DeferredImportSelector进行处理
解析每一个@ConfigurationClass的关键类是ConfigurationClassParser的parse方法
ConfigurationClassPostProcessor 类
何时进行自动装配
SpringBoot自动装配原理
0 条评论
回复 删除
下一页