当前位置:   article > 正文

Spring扫描BeanDefinition过程_spring beandefination扫描全过程

spring beandefination扫描全过程

1、BeanDefinitionRegistryPostProcessor

处理顺序:
    PriorityOrdered
    Ordered
    无

  • postProcessorBeanDefinitionRegistry()

        ConfigurationClassPostProcessor后置处理器

  1. parser.parse(candidates);
  2. // ......
  3. this.reader.loadBeanDefinitions(configClasses);


            1、parse方法
                1、解析加了@PropertySources注解的类
                2、如果加了@ComponentScan或者ComponentScans,扫描所有的包中的类并添加到beanDefinitionMap中
                3、处理所有@Import注解导入的类(处理@ImportSelector,@ImportBeanDefinitionRegistrar,其他的按@Configuration类处理),将这些类变成ConfigurationClass,不会变成BeanDefinition
                4、处理所有通过@ImportResource引入的配置文件
                5、处理所有@Bean引入的类
                6、处理接口中的默认方法
                7、解析父类
            2、loadBeanDefinitions方法
                将通过@Import、@Bean等注解方式注册的类解析成BeanDefinition并放入BeanDefinitionMap中去

  • postProcessorBeanFactory()

ConfigurationClassPostProcessor后置处理器

  1. enhanceConfigurationClasses(beanFactory);
  2. beanFactory.addBeanPostProcessor(new ImportAwareBeanPostProcessor(beanFactory));


            1、对@Configuration注解的类进行代理(CGLIB)
            2、添加一个后置处理器ImportAwareBeanPostProcessor

2、BeanFactoryPostProcessor

处理顺序
    PriorityOrdered
    Ordered
    无

    postProcessorBeanFactory()

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/我家小花儿/article/detail/609337
推荐阅读
相关标签
  

闽ICP备14008679号