转载

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

在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

原文  http://www.javacoder.cn/?p=1182
正文到此结束
Loading...