欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

基于spring boot排除掃描類的三種方式小結(jié)

 更新時(shí)間:2021年08月02日 10:10:46   作者:micro_hz  
這篇文章主要介紹了spring boot排除掃描類的三種方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教

最近在做單測(cè)的時(shí)候,由于自己配置的spring boot容器會(huì)默認(rèn)掃描很多不想被加載,網(wǎng)上中文的文章并不多,所以來總結(jié)一下。

默認(rèn)下面描述的類都在一個(gè)包下面

第一步我們新建一個(gè)應(yīng)用啟動(dòng)的類,一個(gè)類用來充當(dāng)Configuration,為了能明顯的感知到其到底有沒生效,我編寫如下:

@SpringBootApplication
public class Test  {
    public static void main(String[] args) {
        new SpringApplication(Test.class).run(args);
    }
}
@Configuration
public class MyConfig {
    @Bean
    public BeanPostProcessor beanPostProcessor() {
        System.out.println("初始化了 bean BeanPostProcessor");
        return new BeanPostProcessor() {
            @Override
            public Object postProcessBeforeInitialization(Object bean, String beanName) throws BeansException {
                System.out.println("加載了bean " + beanName);
                return bean;
            }
            @Override
            public Object postProcessAfterInitialization(Object bean, String beanName) throws BeansException {
                return bean;
            }
        };
    }
}

我們可以啟動(dòng)應(yīng)用發(fā)現(xiàn)輸出

初始化了 bean BeanPostProcessor
加載了bean org.springframework.context.event.internalEventListenerProcessor
加載了bean org.springframework.context.event.internalEventListenerFactory
加載了bean org.springframework.boot.autoconfigure.AutoConfigurationPackages
加載了bean org.springframework.boot.autoconfigure.context.PropertyPlaceholderAutoConfiguration
加載了bean org.springframework.boot.autoconfigure.jmx.JmxAutoConfiguration
加載了bean objectNamingStrategy
加載了bean mbeanServer
加載了bean mbeanExporter
加載了bean org.springframework.boot.autoconfigure.context.ConfigurationPropertiesAutoConfiguration
加載了bean spring.info-org.springframework.boot.autoconfigure.info.ProjectInfoProperties
加載了bean org.springframework.boot.autoconfigure.info.ProjectInfoAutoConfiguration
加載了bean org.springframework.boot.autoconfigure.web.WebClientAutoConfiguration

說明被@Configuration 修飾的類MyConfig本身被掃描了。

方法1:用exclude指明明確要排除的類.

@SpringBootApplication
@ComponentScan(excludeFilters = {@ComponentScan.Filter(type = FilterType.ASSIGNABLE_TYPE, classes = {MyConfig.class})})
public class Test  {
    public static void main(String[] args) {
        new SpringApplication(Test.class).run(args);
    }
}

用ComponentScan的excludeFilters屬性,可以明確排除調(diào)需要掃描的類。

但是這里存在一個(gè)問題,如果要排除的類比較多,那這里會(huì)看起來很冗余。我們可以采用第二種方式。注解排除。

方法2 : 用注解方式排除

public @interface IgnoreScan {
}

新建此注解。

在需要忽略的類上添加:

@Configuration
@IgnoreScan
public class MyConfig {
    @Bean
    public BeanPostProcessor beanPostProcessor() {
        System.out.println("初始化了 bean BeanPostProcessor");
        return new BeanPostProcessor() {
            @Override
            public Object postProcessBeforeInitialization(Object bean, String beanName) throws BeansException {
                System.out.println("加載了bean " + beanName);
                return bean;
            }
            @Override
            public Object postProcessAfterInitialization(Object bean, String beanName) throws BeansException {
                return bean;
            }
        };
    }
}

這樣即可排除掉不被掃描了。

方法3 :

第三種方式實(shí)現(xiàn)org.springframework.core.type.filter.TypeFilter,然后也是ComponentScan去排除指定的注解。網(wǎng)上寫的好的文章很多,這里不多說了。

以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • 基于Bigdecimal科學(xué)計(jì)數(shù)問題

    基于Bigdecimal科學(xué)計(jì)數(shù)問題

    這篇文章主要介紹了基于Bigdecimal科學(xué)計(jì)數(shù)問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-06-06
  • MybatisPlus?構(gòu)造器wrapper的使用與原理解析

    MybatisPlus?構(gòu)造器wrapper的使用與原理解析

    本次我們介紹了MybatisPlus?構(gòu)造器wrapper的使用方式及其易錯(cuò)點(diǎn),同時(shí)也針對(duì)其運(yùn)行的原理進(jìn)行了解釋,只有深刻理解了它的原理,我們才能更靈活的使用,并且更快的排查出問題,感興趣的朋友跟隨小編一起看看吧
    2024-05-05
  • Lombok的@Data等注解無效的解決

    Lombok的@Data等注解無效的解決

    這篇文章主要介紹了Lombok的@Data等注解無效的解決,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-11-11
  • 非常適合新手學(xué)生的Java線程池優(yōu)化升級(jí)版

    非常適合新手學(xué)生的Java線程池優(yōu)化升級(jí)版

    作者是一個(gè)來自河源的大三在校生,以下筆記都是作者自學(xué)之路的一些淺薄經(jīng)驗(yàn),如有錯(cuò)誤請(qǐng)指正,將來會(huì)不斷的完善筆記,幫助更多的Java愛好者入門
    2022-03-03
  • 關(guān)于Spring Cloud 本地屬性覆蓋的問題

    關(guān)于Spring Cloud 本地屬性覆蓋的問題

    這篇文章主要介紹了關(guān)于Spring Cloud 本地屬性覆蓋的問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-03-03
  • Java實(shí)現(xiàn)讀取SFTP服務(wù)器指定目錄文件的方法

    Java實(shí)現(xiàn)讀取SFTP服務(wù)器指定目錄文件的方法

    SFTP是一種在安全通道上傳輸文件的協(xié)議,它是基于SSH(Secure Shell)協(xié)議的擴(kuò)展,用于在客戶端和服務(wù)器之間進(jìn)行加密的文件傳輸,這篇文章主要介紹了Java實(shí)現(xiàn)讀取SFTP服務(wù)器指定目錄文件,感興趣的朋友跟隨小編一起看看吧
    2023-08-08
  • Java Swing中的文本框(JTextField)與文本區(qū)(JTextArea)使用實(shí)例

    Java Swing中的文本框(JTextField)與文本區(qū)(JTextArea)使用實(shí)例

    這篇文章主要介紹了Java Swing中的文本框(JTextField)與文本區(qū)(JTextArea)使用實(shí)例,Swing是一個(gè)用于開發(fā)Java應(yīng)用程序用戶界面的開發(fā)工具包,需要的朋友可以參考下
    2014-10-10
  • 如何在Spring Boot項(xiàng)目中使用Spring AI

    如何在Spring Boot項(xiàng)目中使用Spring AI

    Spring AI是Spring框架中用于集成和使用人工智能和機(jī)器學(xué)習(xí)功能的組件,它提供了一種簡化的方式來與AI模型進(jìn)行交互,這篇文章主要介紹了Spring Boot 在項(xiàng)目中使用Spring AI,需要的朋友可以參考下
    2024-05-05
  • Springboot+redis+Vue實(shí)現(xiàn)秒殺的項(xiàng)目實(shí)踐

    Springboot+redis+Vue實(shí)現(xiàn)秒殺的項(xiàng)目實(shí)踐

    本文主要介紹了Springboot+redis+Vue實(shí)現(xiàn)秒殺的項(xiàng)目實(shí)踐,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2022-08-08
  • Spring中基于xml的AOP實(shí)現(xiàn)詳解

    Spring中基于xml的AOP實(shí)現(xiàn)詳解

    這篇文章主要介紹了Spring中基于xml的AOP實(shí)現(xiàn)詳解,基于xml與基于注解的AOP本質(zhì)上是非常相似的,都是需要封裝橫切關(guān)注點(diǎn),封裝到切面中,然后把橫切關(guān)注點(diǎn)封裝為一個(gè)方法,再把該方法設(shè)置為當(dāng)前的一個(gè)通知,再通過切入點(diǎn)表達(dá)式定位到橫切點(diǎn)就可以了,需要的朋友可以參考下
    2023-09-09

最新評(píng)論