/**
* 自定义过滤原则
* @author dongwei_qi
*实现TypeFilter接口
*/
public class MyTypeFilter implements TypeFilter {
@Override
public boolean match(MetadataReader metadataReader, MetadataReaderFactory metadataReaderFactory)
throws IOException {
// 获取当前正在扫描类的注解
AnnotationMetadata annotationMetadata = metadataReader.getAnnotationMetadata();
String[] interfaceNames = annotationMetadata.getInterfaceNames();
for (String name : interfaceNames) {
System.out.println("---->---- " +name);
}
// 获取当前正在扫描类的类信息
ClassMetadata classMetadata = metadataReader.getClassMetadata();
// 获取当前类资源路径
Resource resource = metadataReader.getResource();
String className = classMetadata.getClassName();
// 设定过滤规则包含Controller
if(className.contains("Controller")) {
return true;
}
System.out.println("----> " + className);
return false;
}
}
// 配置类标识
@Configuration
//设置扫描包相当于配置文件中<context:component-san ></context:component-san >
@ComponentScan(value = "com.at",includeFilters={
// @Filter(type=FilterType.ANNOTATION,classes= {Controller.class}),
@Filter(type=FilterType.CUSTOM,classes= {MyTypeFilter.class})//配置类中增加过滤规则
},useDefaultFilters = false)
public class MainAnnotation{
// bean注解注入对象
@Bean
public Person person() {
return new Person("王五", "20");
}
}
注:这里如果是springBoot框架在启动类中增加过滤规则