Spring的Import,ComponentScan,ImportResource原理
org.springframework.context.annotation.ConfigurationClassPostProcessor(Bean定义的后置处理器)中,轮询BeanDefinitionRegistry中注册的所有已注册的类,找出包含Import,ComponentScan,ImportResource注解的类。
@Import原理
如果@Import注解有包括属性org.springframework.context.annotation.ImportBeanDefinitionRegistrar实现类。则执行ImportBeanDefinitionRegistrar的registerBeanDefinitions方法,
把自定义的类定义(org.springframework.beans.factory.config.BeanDefinitionHolder)注入org.springframework.beans.factory.support.BeanDefinitionRegistry中。
Spring中常用的把包路径下的类注册入BeanDefinitionRegistry的工具类为:org.springframework.context.annotation.ClassPathBeanDefinitionScanner。
ImportBeanDefinitionRegistrar接口实现类常用于注册自定义的类定义到Spring的BeanDefinitionRegistry中。