微服务架构和实践SpringBoot极简教程 · Spring Boot Java 杂谈

Spring:自定义类扫描器(扫包)

2018-01-25  本文已影响1670人  聪明的奇瑞

相关文章:Spring:获取容器中的Bean
相关文章:Spring Boot:容器加载时执行特定操作

前言

<bean id="myBean" class="your.pkg.YourClass"/>
<context:component-scan base-package="your.pkg"/>
@ComponentScan(basePackages = {"your.pkg", "other.pkg"})
public class Application { ... }

Spring 内置的扫描器

public ClassPathScanningCandidateComponentProvider(boolean useDefaultFilters) {
  this(useDefaultFilters, new StandardEnvironment());
}

TypeFilter 接口

public interface TypeFilter {
    boolean match(MetadataReader metadataReader, MetadataReaderFactory metadataReaderFactory)
            throws IOException;
}

自定义首描

ClassPathScanningCandidateComponentProvider provider = new ClassPathScanningCandidateComponentProvider(false); // 不使用默认的TypeFilter
provider.addIncludeFilter(new AnnotationTypeFilter(Test.class));
Set<BeanDefinition> beanDefinitionSet = provider.findCandidateComponents("spring.demo.entity");
上一篇 下一篇

猜你喜欢

热点阅读