使用@Import注解里面的类,如果实现了ImportSelector接口,会调用其方法,按照结果注册bean。
public interface ImportSelector {
String[] selectImports(AnnotationMetadata var1);
}
public class JpaContextImportSelector implements ImportSelector {
private static boolean evaluationContextExtensionPresent = false;
static {
evaluationContextExtensionPresent = ClassUtils.isPresent("org.springframework.data.repository.query.spi.EvaluationContextExtensionSupport", JpaContextImportSelector.class.getClassLoader());
}
@Override
public String[] selectImports(AnnotationMetadata annotationMetadata) {
if(evaluationContextExtensionPresent){
return new String[]{"com.simpletour.kassone.cas.client.config.context.JpaContextConfig"};
}else{
return new String[0];
}
}
}
例子:
注意1,可从AnnotationMetadata中得到注解元信息
2,返回的数组的类会被定义为bean,(当然如果他是@Configuration文件,依然生效)