Spring扫描之你不知道的配置类横向流程图
2022-09-16 11:53:38 6 举报
为你推荐
查看更多
xxx
作者其他创作
大纲/内容
2、处理@PropertySource注解
判断是不是一个配置类
1、是否存在@Component注解
生成对应的ImportBeanDefinitionRegister的实例对象
递归处理当前类所实现的接口,查看接口中是否存在加了@Bean注解的默认方法。【主要针对JAVA8及以后】
解析出@PropertySource注解所配置的Properties文件路径,封装为Properties对象并添加到Enviroment中
扫描路径得到BeanDefiniton集合
处理当前Configuration的importBeanDefinitionRegistrars属性,执行registerBeanDefinitons()方法进行BeanDefiniton的注册
如果当前ConfigurationClass有@Bean方法,则通过该方法生成BeanDefiniton并注册
解析AppConfig对应的BeanDefinition
每个ConfigurationClass解析完了之后,就会把ConfigurationClass对象添加到configurationClasses中
判断导入的class类型
调用this.reader.loadBeanDefinitions(configClasses)再次处理ConfigurationClass并得到BeanDefiniton并注册
把导入的资源路径添加到ConfigrutionClass对象中的importedResource属性中
4、处理@ImportResource注解
遍历BeanDefiniton集合
5、处理@Bean
调用processImports()方法处理所导入的类
递归调用processImports()方法
添加到ConfigurationClass对象的importBeanDefinitionRegistrars属性中
把AppConfig封装为一个ConfigurationClass
处理子流程
遍历未再次处理过的ConfigurationClass
整个解析ConfigurationClass结束之后,从configurationclasses中把所有的configurationClass取出来
不管是否存在@Component注解
普通类型
AppConfig中是否存在内部内
递归调用processConfigurationClass()方法,处理当前配置类,会把这些类添加到configurationClasses中
3、处理@Import注解
递归调用processConfigurationClasses()方法处理新的配置类
递归解析父类
处理当前Configuration的importResource属性,解析所导入的xml文件
3、处理@ComponentScan
执行selectImports()方法,得到多个类
当父类为空,则递归结束
存在
把加了@Bean注解的Method对象添加到configurationClass对象的beanMethods属性中
遍历所有的内部内
1、ImportSelector类型
如果存在
2、ImportBeanDefinitionRegistrar
0 条评论
回复 删除
下一页