上一篇:Spring5 源码分析-容器刷新-@Import(类 implments ImportSelector)java
功能说明spring
一样也是导入自定义的配置类,可是经过它导入的配置类会晚于@Import(class implements ImportSelector)导入的配置类和@Configuration配置类被解析与执行。当执行到它的时候,表明着被@Import修饰的配置类的其余操做已经执行完成。ide
举例Demo源码分析
自定义DefferedImportSelectorthis
public class MyDeferImportSelector implements DeferredImportSelector { @Override public String[] selectImports(AnnotationMetadata importingClassMetadata) { return new String[]{ImportConfigClass.class.getName()}; } }
主配置类spa
@ComponentScan("com.jv.spring.importannotation.scan") @Configuration @PropertySource("classpath:au.properties") @Import(MyDeferImportSelector.class) public class ImportSpringAppConfig{}
源码分析.net
@Import流程图请出门左转看上一篇文章Spring5 源码分析-容器刷新-@Import(类 implments ImportSelector)设计
在org.springframework.context.annotation.ConfigurationClassParser#doProcessConfigurationClass()执行以后再执行this.deferredImportSelectorHandler.process()--handler.processGroupImports()--getImports()--process()--selectImports() 最终依然会在递归调用processImports进行真正的导入操做code
注:里面加另外一个Group的概念,有点难,经过DEBUG跟踪看了看,Group暂时没用到,之后场景中遇到再来补充其设计的真正用意。blog
下一篇:Spring5 源码分析-容器刷新-@Import(类 implements ImportBeanDefinitionRegistrar)