SpringBoot中@ComponentScan注解過濾排除不加載某個類的3種方法
SpringBoot—@ComponentScan注解過濾排除某個類的三種方法
一、引言
在引用jar包的依賴同時,經(jīng)常遇到有包引用沖突問題。一般我們的做法是在Pom文件中的dependency節(jié)點下添加exclusions配置,排除特定的包。這樣按照包做的排除范圍是比較大的,現(xiàn)在我們想只排除掉某個特定的類,這時我們怎么操作呢?
二、解決沖突的方法
方法一:pom中配置排除特定包
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-log4j12</artifactId>
<version>${slf4j.version}</version>
<exclusions>
<exclusion>
<artifactId>slf4j-api</artifactId>
<groupId>org.slf4j</groupId>
</exclusion>
</exclusions>
</dependency>缺點:排除的范圍比較大,不能排除指定對象;
方法二:@ComponentScan過濾特定類
@ComponentScan(value = "com.xxx",excludeFilters = {
@ComponentScan.Filter(type = FilterType.ASSIGNABLE_TYPE,classes = {
com.xxx.xxx.xxx.class,
com.xxx.xxx.xxx.class,
....
})
})
@SpringBootApplication
public class StartApplication {
public static ApplicationContext applicationContext = null;
public static void main(String[] args) {
applicationContext = SpringApplication.run(StartApplication.class, args);
}
}- 優(yōu)點:使用FilterType.ASSIGNABLE_TYPE配置,可以精確的排除掉特定類的加載和注入;
- 缺點:如果有很多類需要排除的話,這種寫法就比較臃腫了;
方法三:@ComponentScan.Filter使用正則過濾特定類
@ComponentScan(value = "com.xxx",excludeFilters = {
@ComponentScan.Filter(type = FilterType.REGEX,pattern = {
//以下寫正則表達式,需要對目標(biāo)類的完全限定名完全匹配,否則不生效
"com.xxx.xxx.impl.service.+",
....
})
})
@SpringBootApplication
public class StartApplication {
public static ApplicationContext applicationContext = null;
public static void main(String[] args) {
applicationContext = SpringApplication.run(StartApplication.class, args);
}
}優(yōu)點:可以通過正則去匹配目標(biāo)類型的完全限定名,一個表達式可以過濾很多對象;
三、總結(jié)
不同場景下按需配置即可,我遇到的問題是有那么幾十個類有沖突,不想注入這些類,這時我使用正則過濾特定類的方法解決了我的問題。
到此這篇關(guān)于SpringBoot中@ComponentScan注解過濾排除不加載某個類的3種方法的文章就介紹到這了,更多相關(guān)@ComponentScan注解過濾排除某個類內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
深入理解Java并發(fā)編程之LinkedBlockingQueue隊列
本文主要介紹了Java并發(fā)編程之LinkedBlockingQueue隊列,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2022-04-04
使用Java Stream將集合轉(zhuǎn)換為一對一Map的方法詳解
在日常的開發(fā)工作中,我們經(jīng)常使用到Java Stream,特別是Stream API中提供的Collectors.toList()收集器,但有些場景下,我們需要將集合轉(zhuǎn)換為Map,所以本文就給大家介紹了如何使用Java Stream將集合轉(zhuǎn)換為一對一Map,需要的朋友可以參考下2025-12-12
jackson在springboot中的使用方式-自定義參數(shù)轉(zhuǎn)換器
這篇文章主要介紹了jackson在springboot中的使用方式-自定義參數(shù)轉(zhuǎn)換器,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2021-10-10
spring自定義注解實現(xiàn)攔截器的實現(xiàn)方法
本篇文章主要介紹了spring自定義注解實現(xiàn)攔截器的實現(xiàn)方法,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2017-08-08

