Spring扫描BeanDefinition过程

1、BeanDefinitionRegistryPostProcessor

处理顺序:
    PriorityOrdered
    Ordered
    无

  • postProcessorBeanDefinitionRegistry()

        ConfigurationClassPostProcessor后置处理器

parser.parse(candidates);
// ......
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后置处理器

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


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

2、BeanFactoryPostProcessor

处理顺序
    PriorityOrdered
    Ordered
    无

    postProcessorBeanFactory()

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值