configurationClassPostProcessor解析
2022-11-27 21:49:24 0 举报
configurationClassPostProcessor解析过程
作者其他创作
大纲/内容
configurationClassPostProcessor
根据指定的路径来进行扫描操作Set<BeanDefinition> candidates =findCandidateComponents(basePackage)
postProcessBeanFactor()
从集合中循环判断每一个对象
doScan(String...basePackages)
processConfigurationClass开始进行各个注解的解析工作
@Bean的单例问题
创建配置类解析器configurationClassParser
创建一个空的去重集合用来存放扫描到的类Set<BeanDefinitionHolder> beanDefinitions= new LinkedHashSet<>()
解析@Componentscan注解中包含的属性值
解析@lmport注解
解析@lmportSource注解
向容器中添BeanPostProcessormportAwareBeanPostProcessor.class
从容器中获取到所有的BeanDefinitionName
是
processConfigBeanDefinitions(registry)处理配置类的解析信息
注册到当前容器中
开始postProcessBeanDefinitionRegistr()
doProcessConfigurationClass实际干活的方法
创建两个空的集合对象用来进行去重操作分别存放配置类和已经解析过的配置
是否是符合规则的配置类
否
解析@Propertysource注解
parser.parse()核心的解析流程
解析父类
动态代理
解析@Bean注解
BeanDefinitionRegistryPostProcessor
解析@ComponentScan注解
递归处理成员嵌套类
直接忽略
BeanFactoryPostProcessor
enhanceConfigurationClasses(beanFactory)对当前的配置类进行增强操作
@Configurationpublic class MyConfiguration(@Beanpublic Person getPerson(){return new Person(){ }};
返回刚刚创建好的集合对象beanDefinitions
创建一个空的list集合,用来存放BeanDefintion
0 条评论
下一页