關(guān)于@ComponentScan?TypeFilter自定義指定掃描bean的規(guī)則
@ComponentScan TypeFilter自定義指定掃描bean的規(guī)則
1.FilterType.CUSTOM 自定義過(guò)濾方式
@Configuration
@ComponentScan(value = "com.wjy",useDefaultFilters = false,includeFilters = {
@Filter(type = FilterType.CUSTOM,value = {MyFilterType.class})
})
public class Config {
public static void main(String[] args) {
var annotationConfigApplicationContext = new AnnotationConfigApplicationContext(Config.class);
var beanNames = annotationConfigApplicationContext.getBeanDefinitionNames();
//打印所有的掃描到的bean
Arrays.stream(beanNames).forEach(e -> System.out.println(e));
}
}自定義過(guò)濾類:所有包含“service”的類名都掃描進(jìn)來(lái)
public class MyFilterType implements TypeFilter {
/**
*
* @param metadataReader 讀取到的當(dāng)前正在掃描的信息
* @param metadataReaderFactory 可以獲取到其他任何類的信息的
* @return
* @throws IOException
*/
@Override
public boolean match(MetadataReader metadataReader, MetadataReaderFactory metadataReaderFactory) throws IOException {
//獲取當(dāng)前類注解信息
var annotationMetadata = metadataReader.getAnnotationMetadata();
//獲取當(dāng)前正在掃描類信息
var classMetadata = metadataReader.getClassMetadata();
//獲取當(dāng)前類路徑
var resource = metadataReader.getResource();
if(annotationMetadata.getClassName().toLowerCase().contains("service")){
return true;
}
return false;
}
}
@ComponentScan ANNOTATION type filter requires an annotation type
異常
訪問(wèn) http://localhost/save 時(shí) 控制臺(tái)報(bào)錯(cuò)
@ComponentScan ANNOTATION type filter requires an annotation type

原因
我們?cè)赟pringConfig Bean管理掃描范圍時(shí)想給不排除掉的Bean設(shè)置 ANNOTATION排除規(guī)則時(shí),指定錯(cuò)了classes屬性 的類型,所以報(bào)如上錯(cuò)誤??
錯(cuò)誤代碼

修改后:

總結(jié)
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
java實(shí)現(xiàn)字符串匹配求兩個(gè)字符串的最大公共子串
這篇文章主要介紹了java實(shí)現(xiàn)求兩個(gè)字符串最大公共子串的方法,詳細(xì)的描述了兩個(gè)字符串的最大公共子串算法的實(shí)現(xiàn),需要的朋友可以參考下2016-10-10
springboot整合mail實(shí)現(xiàn)郵箱的發(fā)送功能
本文分步驟給大家介紹springboot整合mail實(shí)現(xiàn)郵箱的發(fā)送功能,代碼簡(jiǎn)單易懂,對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友參考下吧2021-09-09
MyBatis使用嵌套查詢collection和association的實(shí)現(xiàn)
本文詳細(xì)介紹了使用MyBatis框架進(jìn)行數(shù)據(jù)庫(kù)操作時(shí),如何利用collection標(biāo)簽實(shí)現(xiàn)一對(duì)多的嵌套查詢和使用association標(biāo)簽實(shí)現(xiàn)一對(duì)一的嵌套查詢,感興趣的可以了解一下2024-09-09
list轉(zhuǎn)tree和list中查找某節(jié)點(diǎn)下的所有數(shù)據(jù)操作
這篇文章主要介紹了list轉(zhuǎn)tree和list中查找某節(jié)點(diǎn)下的所有數(shù)據(jù)操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2020-09-09
idea快速找到項(xiàng)目中對(duì)應(yīng)的類圖文詳解(包括源碼)
用IDEA開(kāi)發(fā)Java項(xiàng)目時(shí)經(jīng)常會(huì)使用到各種快捷鍵,其中搜索是最常用的之一,下面這篇文章主要給大家介紹了關(guān)于idea如何快速找到項(xiàng)目中對(duì)應(yīng)的類(包括源碼)的相關(guān)資料,文中通過(guò)圖文介紹的非常詳細(xì),需要的朋友可以參考下2023-06-06
阿里nacos+springboot+dubbo2.7.3統(tǒng)一處理異常的兩種方式
本文主要介紹了阿里nacos+springboot+dubbo2.7.3統(tǒng)一處理異常的兩種方式,文中根據(jù)實(shí)例編碼詳細(xì)介紹的十分詳盡,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2022-03-03
Java新特性中Preview功能如何運(yùn)行調(diào)試詳解
這篇文章主要為大家介紹了Java新特性中Preview功能如何運(yùn)行調(diào)試詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-10-10

