IOC01_解析配置类
2025-12-18 13:28:17 0 举报
IOC01_解析配置类
作者其他创作
大纲/内容
递归解析父类
存在
遍历未再次处理过的ConfigurationClass
调用processImports()方法处理所导入的类
把AppConfig封装为一个ConfigurationClass
递归调用processConfigurationClass()方法,处理新的配置类
递归处理当前类所实现的接口,查看接口中是否存在@Bean注解了的默认方法
把导入的资源路径添加到ConfigurationClass对象中的importedResources属性中
处理子流程
调用this.reader.loadBeanDefinitions(configClasses)再次处理ConfigurationClass并得到BeanDefinition并注册
解析出@PropertySource注解所配置的Properties文件路径,封装为Properties对象并添加到Environment中
是否存在@Component注解
处理封装后的ConfigurationClass对象,processConfigurationClass()方法
判断所导入的Class类型
添加到ConfigurationClass对象到importBeanDefinitionRegistrars属性中
每个ConfigurationClass解析完了之后,就会把ConfigurationClass对象添加到configurationClasses中
是
递归调用processConfigurationClass()方法,处理当前类配置类,会把这些类添加到configurationClasses中
处理当前ConfigurationClass的importBeanDefinitionRegistrars)属性,执行registerBeanDefinitions()方法进行BeanDefinition的注册
处理@Import注解
执行selectImports()方法,得到多个类
无论是否存在
AppConfig中是否存在内部类
遍历BeanDefinition
处理@ComponentScan注解
处理@PropertySource注解
处理@ImportResource注解
ImportBeanDefinitionRegistrar
把加了@Bean注解的Method对象添加到ConfigurationClass对象的beanMehtods属性中
生成对应的ImportBeanDefinitionRegistrar的实例对象
整个解析ConfigurationClass结束之后,从configurationClasses中把所有ConfigurationClass取出来
判断是不是一个配置类
普通类型
遍历所有内部类
处理当前ConfigurationClass的importedResources属性,解析所导入的xml文件
解析AppConfig对应的BeanDefinition
递归调用 processImports()方法处理所得到的的类
如果当前ConfigurationClass有@Bean方法,那么则通过该方法生成BeanDefinition并注册
ImportSelector
如果内部类也是配置类
扫描指定路径得到BeanDefinition集合
处理@Bean
0 条评论
下一页