先通过conditionEvaluator条件计算器判断是否跳过当前解析

shouldSkip()中执行具体的判断逻辑

处理配置类

configClass如果存在父类,则需要将configClass变成sourceClass去解析,然后返回sourceClass的父类sourceClass是一个简单的包装类

进入该方法


此处对processConfigurationClass()方法进行了递归调用(扣题)
解析加载properties文件,并将属性添加到spring上下文中

processPropertySource ( propertySource )

进入上图所示addPropertySource ()方法
添加属性资源、addPropertySource ()


进入解析方法:
依次获取@ComponentScan的相关属性为刚刚创建的扫面类赋值
scanner.doScan())
doScan()
在这个方法中,将上一个方法中放置需要扫描的包的集合传入创建好的扫描器进行处理,注册符合要求的BeanDefinition

registerBeanDefinition ()
注册BeanDefinition


由于被import的类也有可能被@Import注解修饰,于是采用了递归处理



jdk8开始,接口中的方法可以有自己的默认实现,所以如果这个接口的方法加了@Bean注解,也需要被解析


这样当返回到parse()方法时,也能取到值(╯﹏╰)
作者:AQin1012
链接:https://juejin.cn/post/7125730881658388493
来源:稀土掘金
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。