spring源码之processConfigBeanDefinitions()-4

ComponentScan扫描

回到doProcessConfigurationClass()这个方法中继续往下看,这部分就是解析ComponentScan并且扫描的代码,我们之前已经解析过了,就不再看这一部分了。
这里要注意一个点,就是在扫描出来所有的类,还会递归调用parse(),重新进入这个方法。因为一切皆配置类,要再次看一下扫描出来的类中是否有需要解析的配置信息。
在这里插入图片描述

处理Import注解

继续向下看源码,这一行就是处理所有的Import注解的。
其中getImports()方法是获取当前类上面Import注解中的所有类,返回的是一个set集合
在这里插入图片描述
点进这个方法看一下
在这里插入图片描述
这个方法里面主要有三个判断:
1、当前类是否为ImportSelector子类
2、当前类是否为ImportBeanDefinitionRegistrar子类
3、为普通类 则递归调用processConfigurationClass方法,按照上面的流程再来一遍
在这里插入图片描述

ImportSelector类的处理

处理Import注解的时候,有三个if判断,第一个判断就是处理ImportSelector的实现类
PS:要注意这处理的类不会放到单例池中

public class X implements ImportSelector {

	@Override
	public String[] selectImports(AnnotationMetadata importingClassMetadata) {
		return new String[]{"com.spring.enhancer.bean.Y","com.spring.enhancer.bean.Z"};
	}
}

在这里插入图片描述

ImportBeanDefinitionRegistrar类的处理

处理Import注解的时候,有三个if判断,第二个判断就是处理ImportBeanDefinitionRegistrar的实现类
这里就是放入了这个集合中,而这个集合存储的就是当前处理的类,引入的所有ImportBeanDefinitionRegistrar实现类
PS:要注意这处理的类不会放到单例池中
在这里插入图片描述

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

木小同

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值