spring解析@Configuration注解的配置类的过程

1月 17, 2018 |

在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

Comments are closed.