03、Spring註解開發——元件註冊-自定義TypeFilter指定過濾規則
阿新 • • 發佈:2020-12-20
技術標籤:Spring註解驅動開發
在上一節,講述了TypeFilter有ANNOTATION、ASSIGNABLE_TYPE、ASPECTJ、REGEX、CUSTOM幾種過濾規則,這篇文章主要來講最後一種CUSTOM過濾規則,即自定義TypeFilter指定過濾規則。
1.新建一個MyTypeFilter類,實現TypeFilter介面,實現接口裡面的match方法。
match方法裡面有兩個引數:
metadataReader: 讀取到當前正在掃描的類的資訊
metadataReaderFactory : 可以獲取到其他任何類的資訊
public class MyFilterType implements TypeFilter {
/**
*
* @param metadataReader 讀取到當前正在掃描的類的資訊
* @param metadataReaderFactory 可以獲取到其他任何類的資訊
* @return
* @throws IOException
*/
public boolean match(MetadataReader metadataReader, MetadataReaderFactory metadataReaderFactory) throws IOException {
//獲取當前類註解的資訊
AnnotationMetadata annotationMetadata = metadataReader.getAnnotationMetadata();
//獲取當前正在掃描的類資訊
ClassMetadata classMetadata = metadataReader.getClassMetadata();
//獲取當前資源(類路徑)
Resource resource = metadataReader.getResource();
String className = classMetadata.getClassName();
if(className.contains("er")){
System.out.println("--->"+className);
}
return false;
}
}
該例項中,自定義TypeFilter指定過濾規則為:類名中包含er的類。
2.在配置類中加上該過濾規則。
@ComponentScan(basePackages = {"com.fzl"},
includeFilters = {
@ComponentScan.Filter(type = FilterType.CUSTOM,classes = {MyFilterType.class})},
useDefaultFilters = false)