在spring-context-xxx.RELEASE.jar的如下方法定义了spring解析@Configuration注解的配置类的过程
ConfigurationClassParser.doProcessConfigurationClass()
先递归处理成员类中(inner class)的定义
处理@PropertySource注解
处理@ComponentScan注解
处理@Import 注解
处理@ImportResource注解
处理每个@Bean 注解的方法
处理父类中的注解
本文由javacoder.cn整理,转载注明出处
对于@Import,可以导入@Configuration注解的其他类,或者实现ImportSelector接口的类(当然也可能是子类DeferredImportSelector,用于延迟解析), 或者实现ImportBeanDefinitionRegistrar接口的类。
ImportSelector唯一方法声明如下
String[] org.springframework.context.annotation.ImportSelector.selectImports(AnnotationMetadata importingClassMetadata)
ImportSelector只是一个查找器, 返回表示@Configuration注解的类的名称的数组
ImportBeanDefinitionRegistrar接口声明的方法如下
ImportBeanDefinitionRegistrar.registerBeanDefinitions(AnnotationMetadata importingClassMetadata, BeanDefinitionRegistry registry)
向BeanDefinitionRegistry注册对应的BeanDefinition
Posted in:spring practise