Spring5 源码分析-容器刷新-@Import(类 implments DeferImportSelector)

上一篇: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)

相关文章
相关标签/搜索