Springboot自动装配
2021-03-15 22:49:24 14 举报
Springboot自动装配 流程图
作者其他创作
大纲/内容
向容器中注册AutoConfigurationPackagesAutoConfigurationPackage注解的作用是将 添加该注解的类所在的package 作为 自动配置package 进行管理
获取EnableAutoConfiguration 属性
List<String>
@Import(EnableAutoConfigurationImportSelector.class)
extends
@SpringBootApplication
开始解析配置类
implements
@AutoConfigurationPackage
开始解析
parser.parse(candidates);
BeanClassLoaderAwareBean的类装载器
AutoConfigurationMetadataLoader\t\t\t\t\t.loadMetadata(this.beanClassLoader)
@Import(AutoConfigurationPackages.Registrar.class)
即@SpringBootApplication标注的类)的所在包及子包里面所有组件扫描加载到Spring容器
processDeferredImportSelectors()
PATH = \"META-INF/\"\t\t\t+ \"spring-autoconfigure-metadata.properties\"
加载文件后的存储格式,给容器注入所需的组件Spring Boot在启动的时候从类路径下的META-INF/spring.factories中获取EnableAutoConfiguration指定的值,将这些值作为自动配置类导入到容器中,自动配置类就生效
AutoConfigurationImportSelector
BeanFactoryAware
ConfigurationClassPostProcessor
getAttributes(annotationMetadata)
获取自动配置类
DeferredImportSelector
解析配置类
自动装配流程
invokeBeanFactoryPostProcessors
返回autoConfigurationMetadata
获取属性
@EnableAutoConfiguration
invokeBeanDefinitionRegistryPostProcessors
\"META-INF/spring.factories\"
获取所有实现DeferredImportSelector的配置类
从path中加载时所需要的子资源
processConfigBeanDefinitions(registry)
ImportSelector
AutoConfigurationMetadataLoader.properties
AnnotationConfigApplicationContext
deferredImport.getImportSelector().selectImports(configClass.getMetadata())
refresh()
收藏
收藏
0 条评论
回复 删除
下一页