1. 程式人生 > 其它 >03、Spring註解開發——元件註冊-自定義TypeFilter指定過濾規則

03、Spring註解開發——元件註冊-自定義TypeFilter指定過濾規則

技術標籤: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)