1. value:指定要扫描的包。
2.excludeFilters = Filter[] :指定扫描的时候按照什么规则排除那些组件。
3.includeFilters = Filter[] :指定扫描的时候只需要包含哪些组件(但是我们要将useDefaultFilters设置为flase)。
其中的Filter[]的定义规则为:
1.FilterType.ANNOTATION:按照注解:例如:Controller.class
2.FilterType.ASSIGNABLE_TYPE:按照给定的类型;例如:BookService.class
3.FilterType.ASPECTJ:使用ASPECTJ表达式
4.FilterType.REGEX:使用正则指定
5.FilterType.CUSTOM:使用自定义规则:
@Filter(type=FilterType.CUSTOM,classes={MyTypeFilter.class})
代码如下所示:
package com.atguigu.config;
import java.io.IOException;
import org.springframework.core.io.Resource;
import org.springframework.core.type.Annotationmetadata;
import org.springframework.core.type.Classmetadata;
import org.springframework.core.type.classreading.metadataReader;
import org.springframework.core.type.classreading.metadataReaderFactory;
import org.springframework.core.type.filter.TypeFilter;
public class MyTypeFilter implements TypeFilter {
@Override
public boolean match(metadataReader metadataReader, metadataReaderFactory metadataReaderFactory)
throws IOException {
// TODO Auto-generated method stub
//获取当前类注解的信息
Annotationmetadata annotationmetadata = metadataReader.getAnnotationmetadata();
//获取当前正在扫描的类的类信息
Classmetadata classmetadata = metadataReader.getClassmetadata();
//获取当前类资源(类的路径)
Resource resource = metadataReader.getResource();
String className = classmetadata.getClassName();
System.out.println("--->"+className);
// 这里的意思是类命包含(“er”)的都是可以被扫描进去的
if(className.contains("er")){
return true;//有效
}
return false;// 无效
}
}



