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

詳解springboot項(xiàng)目啟動(dòng)時(shí)如何排除用不到的bean

 更新時(shí)間:2024年01月23日 08:18:34   作者:G探險(xiǎn)者  
使用springboot開(kāi)發(fā)項(xiàng)目,我們有時(shí)候會(huì)排除一些項(xiàng)目里面用不到的bean,不然的話(huà)項(xiàng)目啟動(dòng)會(huì)報(bào)錯(cuò),這種情況通常是發(fā)生在什么場(chǎng)景里呢,以及如何解決呢,今天咱們就聊一聊

springboot默認(rèn)封裝了很多的組件,并且把這些組件都進(jìn)行了自動(dòng)化配置封裝。也就是說(shuō),只要是springboot項(xiàng)目,啟動(dòng)類(lèi)在@SpringBootApplication注解下,在不需要單獨(dú)配置bean的情況下,本項(xiàng)目所用到的bean在容器啟動(dòng)的時(shí)候都會(huì)被自動(dòng)掃描并注入到IOC容器里。這里我所說(shuō)的bean主要指的是pom文件里面配置的那些starter,以及還有一些springboot默認(rèn)封裝的一些組件,比如數(shù)據(jù)源,redis等一些組件。

拿數(shù)據(jù)源來(lái)說(shuō),有時(shí)候我們可能并不想使用springboot默認(rèn)的數(shù)據(jù)源,該怎么辦?就需要在容器啟動(dòng)的時(shí)候進(jìn)行排除掉。

在這方面,@ComponentScan@SpringBootApplication 注解提供了兩種不同的方式來(lái)實(shí)現(xiàn)這個(gè)目標(biāo)。

1. @ComponentScan 的 excludeFilters 屬性

@ComponentScan 注解是用于配置包掃描的注解,其中的 excludeFilters 屬性允許你排除特定類(lèi)型的組件。這在你想要細(xì)粒度地控制哪些組件被掃描時(shí)非常有用。

@Configuration
@ComponentScan(basePackages = "com.example",
        excludeFilters = @ComponentScan.Filter(type = FilterType.ASSIGNABLE_TYPE, classes = ExcludedClass.class))
public class YourConfigurationClass {
    // Your configuration code here
}

在這個(gè)例子中,ExcludedClass 類(lèi)及其子類(lèi)將被排除在組件掃描之外。

2. @SpringBootApplication 的 exclude 屬性

@SpringBootApplication 是一個(gè)復(fù)合注解,它包含了 @ComponentScan 注解,同時(shí)還包含了其他元數(shù)據(jù),比如 @EnableAutoConfiguration,用于自動(dòng)配置。通過(guò) exclude 屬性,你可以在項(xiàng)目的啟動(dòng)類(lèi)上直接排除自動(dòng)配置類(lèi)。

@SpringBootApplication(exclude = DataSourceAutoConfiguration.class)
public class YourSpringBootApplication {
    public static void main(String[] args) {
        SpringApplication.run(YourSpringBootApplication.class, args);
    }
}

在這個(gè)例子中,DataSourceAutoConfiguration 自動(dòng)配置類(lèi)將被排除在Spring Boot應(yīng)用程序的啟動(dòng)過(guò)程中。

3、兩者的對(duì)比矩陣

特性@ComponentScanexcludeFilters@SpringBootApplicationexclude
作用范圍指定要掃描的包,可選擇性排除特定類(lèi)型的組件在Spring Boot應(yīng)用程序的啟動(dòng)類(lèi)上使用,通常用于排除自動(dòng)配置類(lèi)
排除方式使用 FilterType 指定排除的類(lèi)型,如 ASSIGNABLE_TYPE直接指定要排除的自動(dòng)配置類(lèi)的 Class 對(duì)象
適用場(chǎng)景主要用于排除特定類(lèi)型的組件,不僅限于自動(dòng)配置類(lèi)主要用于排除自動(dòng)配置類(lèi),更符合Spring Boot的整體結(jié)構(gòu)
示例java @ComponentScan(basePackages = "com.example", excludeFilters = @ComponentScan.Filter(type = FilterType.ASSIGNABLE_TYPE, classes = ExcludedClass.class)) java @SpringBootApplication(exclude = DataSourceAutoConfiguration.class) public class YourSpringBootApplication { public static void main(String[] args) { SpringApplication.run(YourSpringBootApplication.class, args); } }

使用這兩種方式,你可以根據(jù)具體需求靈活地排除不需要的組件或自動(dòng)配置類(lèi),以定制化你的Spring Boot應(yīng)用程序。

4、小結(jié)

  • 通常情況下,springboot項(xiàng)目啟動(dòng)時(shí),如果不配置掃描包路徑,那么它默認(rèn)是掃描和啟動(dòng)類(lèi)同級(jí)目錄下及其子目錄下的@Component。

  • 如果配置了掃描包路徑,那么它就會(huì)在此基礎(chǔ)上額外再去掃描配置的包路徑下的@Component

  • 所有遵循stater規(guī)范的依賴(lài)包starter本身并不會(huì)受制于啟動(dòng)類(lèi)@SpringBootApplication啟動(dòng)類(lèi)的掃描包路徑的影響,因?yàn)锧EnableAutoConfiguration注解(全名org.springframework.boot.autoconfigure.EnableAutoConfiguration) 自動(dòng)就會(huì)掃描

  • 需要單獨(dú)指定掃描包路徑的通常并不是一個(gè)starter,因?yàn)檫@些依賴(lài)或者組件包里面的@Component是散裝的,沒(méi)有被一個(gè)配置類(lèi)統(tǒng)一管理,也沒(méi)有被@EnableAutoConfiguration修飾過(guò)。

以上就是springboot項(xiàng)目啟動(dòng)時(shí)如何排除用不到的bean的詳細(xì)內(nèi)容,更多關(guān)于springboot排除用不到的bean的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • JVM優(yōu)先級(jí)線(xiàn)程池做任務(wù)隊(duì)列的實(shí)現(xiàn)方法

    JVM優(yōu)先級(jí)線(xiàn)程池做任務(wù)隊(duì)列的實(shí)現(xiàn)方法

    這篇文章主要介紹了JVM優(yōu)先級(jí)線(xiàn)程池做任務(wù)隊(duì)列的實(shí)現(xiàn)方法,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2020-08-08
  • SpringMVC中文件的上傳與下載詳細(xì)解析

    SpringMVC中文件的上傳與下載詳細(xì)解析

    這篇文章主要介紹了SpringMVC中文件的上傳與下載詳細(xì)解析,在開(kāi)發(fā)中有遇到文件上傳下載的功能需求,今天就來(lái)說(shuō)一下前后端的實(shí)現(xiàn)和要注意的地方,需要的朋友可以參考下
    2024-01-01
  • java并發(fā)之Lock接口的深入講解

    java并發(fā)之Lock接口的深入講解

    從Java 5之后,在java.util.concurrent.locks包下提供了另外一種方式來(lái)實(shí)現(xiàn)同步訪(fǎng)問(wèn).那就是Lock,這篇文章主要給大家介紹了關(guān)于java并發(fā)之Lock接口的相關(guān)資料,需要的朋友可以參考下
    2021-08-08
  • Redisson分布式鎖源碼解析

    Redisson分布式鎖源碼解析

    文章給大家分享了關(guān)于Redisson分布式鎖源碼相關(guān)的知識(shí)點(diǎn)內(nèi)容,有興趣的朋友們可以參考學(xué)習(xí)下。
    2018-08-08
  • Java數(shù)據(jù)結(jié)構(gòu)中七種排序算法實(shí)現(xiàn)詳解

    Java數(shù)據(jù)結(jié)構(gòu)中七種排序算法實(shí)現(xiàn)詳解

    這篇文章主要介紹了Java數(shù)據(jù)結(jié)構(gòu)中七種排序算法的實(shí)現(xiàn)方法,排序算法可分為兩大類(lèi),比較類(lèi)排序和非比較類(lèi)排序,顧名思義可知它們是通過(guò)比較來(lái)決定元素間的相對(duì)次序,需要詳細(xì)了解排序算法的朋友可以參考下
    2024-02-02
  • IDEA編譯報(bào)錯(cuò)“java: 常量字符串過(guò)長(zhǎng)”的原因及解決方法

    IDEA編譯報(bào)錯(cuò)“java: 常量字符串過(guò)長(zhǎng)”的原因及解決方法

    今天在開(kāi)發(fā)過(guò)程中,由于嘗試將一個(gè)文件的 Base64 字符串設(shè)置為常量,結(jié)果導(dǎo)致 IDEA 編譯的時(shí)候出現(xiàn)了如下報(bào)錯(cuò)java: 常量字符串過(guò)長(zhǎng),所以本文給大家記錄了IDEA編譯報(bào)錯(cuò)“java: 常量字符串過(guò)長(zhǎng)”的原因及解決方法,需要的朋友可以參考下
    2025-02-02
  • java模擬客戶(hù)端向服務(wù)器上傳文件

    java模擬客戶(hù)端向服務(wù)器上傳文件

    這篇文章主要為大家詳細(xì)介紹了java模擬客戶(hù)端向服務(wù)器上傳文件,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2019-10-10
  • Java中stream的用法詳細(xì)解讀

    Java中stream的用法詳細(xì)解讀

    這篇文章主要介紹了Java中stream的用法詳細(xì)解讀,Stream 是 Java8 中處理集合的關(guān)鍵抽象概念,它可以指定你希望對(duì)集合進(jìn)行的操作,可以執(zhí)行非常復(fù)雜的查找、過(guò)濾和映射數(shù)據(jù)等操作,使用Stream API 對(duì)集合數(shù)據(jù)進(jìn)行操作,就類(lèi)似于使用SQL執(zhí)行的數(shù)據(jù)庫(kù)查詢(xún),需要的朋友可以參考下
    2023-10-10
  • springboot websocket簡(jiǎn)單入門(mén)示例

    springboot websocket簡(jiǎn)單入門(mén)示例

    這篇文章主要介紹了springboot websocket簡(jiǎn)單入門(mén)示例,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2018-08-08
  • java9學(xué)習(xí)筆記之模塊化詳解

    java9學(xué)習(xí)筆記之模塊化詳解

    Java 9中最重要的功能,毫無(wú)疑問(wèn)就是模塊化(Module),下面這篇文章主要給大家介紹了關(guān)于java9學(xué)習(xí)筆記之模塊化的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來(lái)一起看看吧。
    2018-04-04

最新評(píng)論