Spring之ImportSelector接口

2022-03-02  本文已影响0人  engineer_tang

1. 简介

接口由类型实现,这些类型根据给定的选择标准(通常是一个或多个注释属性)确定应导入哪个@Configuration类。
ImportSelector可以实现以下任何感知接口,在selectImports之前将调用它们各自的方法:
EnvironmentAware
BeanFactoryAware
BeanClassLoaderAware
ResourceLoaderAware
或者,该类可以为单个构造函数提供以下一种或多种受支持的参数类型:
Environment
BeanFactory
ClassLoader
ResourceLoader
ImportSelector实现的处理方式通常与常规@Import注释相同,但是,也可以推迟选择导入,直到所有@Configuration类都已处理完毕(有关详细信息,请参阅DeferredImportSelector)。

2. 接口分析

public interface ImportSelector {

    String[] selectImports(AnnotationMetadata importingClassMetadata);

    @Nullable
    default Predicate<String> getExclusionFilter() {
        return null;
    }

}

2.1 selectImports方法

根据importing@Configuration类的注解元数据,选择并返回应导入的类的名称。
返回:类名,如果没有,则为空数组

2.2 getExclusionFilter方法

这是接口的默认实现方法,返回一个谓词,用于从导入候选对象中排除类,该谓词可传递地应用于通过该选择器的导入找到的所有类。
如果该谓词对于给定的完全限定类名返回true,则该类将不会被视为导入的配置类,从而绕过类文件加载和元数据自省。
返回:传递导入的配置类的完全限定候选类名的筛选器谓词,如果没有,则为null

上一篇下一篇

猜你喜欢

热点阅读