ClassPathScanningCandidateComponentProvider工具类的简单使用
1、扫描包资源
先简单的尝试下发现组件功能
public static void main(String[] args) throws Exception{
//1创建对象,参数先写false
ClassPathScanningCandidateComponentProvider classPathScanningCandidateComponentProvider = new ClassPathScanningCandidateComponentProvider(false);
//2、查找定义信息集合
Set<BeanDefinition> candidateComponents = classPathScanningCandidateComponentProvider.findCandidateComponents("com.alibaba");
System.out.println(candidateComponents);
}
1、创建对象,构造方法如下,如果参数为true则会调用注册默认过滤器方法
1.1、看下这个注册默认过滤器方法
2、查找定义信息集合
2、excludeFilters和includeFilters是该工具类的属性集合,可调用addXX方法添加
3、看下AnnotationTypeFilter这个类继承AbstractTypeHierarchyTraversingFilter
其中AnnotationTypeFilter的matchSelf方法如下,根据注解名字进行匹配
总结:我们可使用AnnotationTypeFilter结合ClassPathScanningCandidateComponentProvider去获取我们想类信息,jpa在扫描类时运用了此工具类