spring源码解析-配置类扫描

spring源码解读(二)spring配置类扫描beanDefinition注入

本次主要记录spring将bean定义扫描进spring容器的过程
1 进入到invokeBeanFactoryPostProcessors方法内
在这里插入图片描述
上图中的beanFactoryPostProcessors是在容器还未扫描的时候里面是否存在beanFactoryPostProcessors,一般为空,(程序员可手动添加,但是一般不会这样干)

在这里插入图片描述
这一行会从bd中拿到继承了BeanDefinitionRegistryPostProcessor接口的bd名字,拿出一个,org.springframework.context.annotation.internalConfigurationAnnotationProcessor。(bd现在有6个,5个是spring自己注入的bd,还有一个我们自己注入的App的bd)

int var10;
            String ppName;
            for(var10 = 0; var10 < var9; ++var10) {
                ppName = var16[var10];
                if (beanFactory.isTypeMatch(ppName, PriorityOrdered.class)) {			//ConfigurationClassPostProcessor 这个类是实现了PriorityOrdered接口
                    currentRegistryProcessors.add(beanFactory.getBean(ppName, BeanDefinitionRegistryPostProcessor.class));	//通过getBean初始化bean,具体过程留在后面,这里我们发现ConfigurationClassPostProcessor
                   			//的对象被加进了beanFactory的单列池,现在单列池有四个bean																																												
                    processedBeans.add(ppName);		//添加进集合
                }
            }

            sortPostProcessors(currentRegistryProcessors, beanFactory);		//如果上一步有多个实现了BeanDefinitionRegistryPostProcessor, PriorityOrdered借口的bean,这里会进行排序,一般一个
            registryProcessors.addAll(currentRegistryProcessors);	// 添加进集合	
            invokeBeanDefinitionRegistryPostProcessors(currentRegistryProcessors, registry);	//执行BeanDefinitionRegistryPostProcessor的postProcessBeanDefinitionRegistry方法
            currentRegistryProcessors.clear();	
            postProcessorNames = beanFactory.getBeanNamesForType(BeanDefinitionRegistryPostProcessor.class, true, false);
            var16 = postProcessorNames;
            var9 = postProcessorNames.length;

单列池现有4个bean
在这里插入图片描述
进入到BeanDefinitionRegistryPostProcessor具体实现类ConfigurationClassPostProcessor的postProcessBeanDefinitionRegistry方法里面

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值