类org.springframework.core.type.filter.AbstractTypeHierarchyTraversingFilter源码实例Demo

下面列出了怎么用org.springframework.core.type.filter.AbstractTypeHierarchyTraversingFilter的API类实例代码及写法,或者点击链接到github查看源代码。

源代码1 项目: enode   文件: EnodeBootstrapRegistrar.java
@Override
public void registerBeanDefinitions(AnnotationMetadata metadata, BeanDefinitionRegistry registry) {
    String declaringClass = metadata.getClass().getName();
    ClassPathBeanDefinitionScanner scanner = new ClassPathBeanDefinitionScanner(registry, false, this.environment, this.resourceLoader);
    scanner.addIncludeFilter(new AnnotationTypeFilter(Command.class));
    scanner.addIncludeFilter(new AnnotationTypeFilter(Event.class));
    AnnotationAttributes enodeScan = attributesFor(metadata, EnableEnode.class.getName());
    Set<String> basePackages = new LinkedHashSet<>();
    String[] basePackagesArray = enodeScan.getStringArray("basePackages");
    for (String pkg : basePackagesArray) {
        String[] tokenized = StringUtils.tokenizeToStringArray(this.environment.resolvePlaceholders(pkg),
                ConfigurableApplicationContext.CONFIG_LOCATION_DELIMITERS);
        Collections.addAll(basePackages, tokenized);
    }
    for (Class<?> clazz : enodeScan.getClassArray("basePackageClasses")) {
        basePackages.add(ClassUtils.getPackageName(clazz));
    }
    if (basePackages.isEmpty()) {
        basePackages.add(ClassUtils.getPackageName(metadata.getClassName()));
    }
    scanner.addExcludeFilter(new AbstractTypeHierarchyTraversingFilter(false, false) {
        @Override
        protected boolean matchClassName(String className) {
            return declaringClass.equals(className);
        }
    });
    String[] scanPackages = StringUtils.toStringArray(basePackages);
    ObjectContainer.BASE_PACKAGES = scanPackages;
    scanner.scan(scanPackages);
}
 
 类所在包
 类方法
 同包方法