天天看點

Spring Boot 排除自動配置的 4 種方法,關鍵時刻很有用!

Spring Boot 排除自動配置的 4 種方法,關鍵時刻很有用!

Spring Boot 提供的自動配置非常強大,某些情況下,自動配置的功能可能不符合我們的需求,需要我們自定義配置,這個時候就需要排除/禁用 Spring Boot 某些類的自動化配置了。

比如:資料源、郵件,這些都是提供了自動配置的,我們需要排除 Spring Boot 的自動化配置,交給我們自己來自定義,該如何做呢?

今天棧長給你介紹 4 種排除方式,總有一種能幫到你!

Spring Boot 排除自動配置的 4 種方法,關鍵時刻很有用!

方法1使用 

@SpringBootApplication

 注解的時候,使用 exclude 屬性進行排除指定的類:

@SpringBootApplication(exclude = {DataSourceAutoConfiguration.class, MailSenderAutoConfiguration.class})public class Application {    // ...}      

自動配置類不在類路徑下的時候,使用 excludeName 屬性進行排除指定的類名全路徑:

@SpringBootApplication(excludeName = {"org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration", "org.springframework.boot.autoconfigure.mail.MailSenderAutoConfiguration"})public class Application {    // ...}      

這個注解內建了 @EnableAutoConfiguration 注解及其裡面的參數,這個不用多解釋了,具體看這篇文章:Spring Boot 最核心的 3 個注解詳解。另外,關注Java技術棧微信公衆号,在背景回複:boot,可以擷取更多 Spring Boot 幹貨。

Spring Boot 排除自動配置的 4 種方法,關鍵時刻很有用!

方法2

單獨使用 @EnableAutoConfiguration 注解的時候:

@...@EnableAutoConfiguration(exclude = {DataSourceAutoConfiguration.class, MailSenderAutoConfiguration.class})public class Application {    // ...}      
@...@EnableAutoConfiguration {"org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration", "org.springframework.boot.autoconfigure.mail.MailSenderAutoConfiguration"})public class Application {    // ...}      

方法3

使用 Spring Cloud 和 @SpringCloudApplication 注解的時候:

@...@EnableAutoConfiguration(exclude = {DataSourceAutoConfiguration.class, MailSenderAutoConfiguration.class})@SpringCloudApplicationpublic class Application {    // ...}      

Spring Cloud 必須建立在 Spring Boot 應用之上,是以這個不用多解釋了。

方法4

終極方案,不管是 Spring Boot 還是 Spring Cloud 都可以搞定,在配置檔案中指定參數 spring.autoconfigure.exclude 進行排除:

spring.autoconfigure.exclude=org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration,\    org.springframework.boot.autoconfigure.mail.MailSenderAutoConfiguration      

或者還可以這樣寫:

spring.autoconfigure.exclude[0]=org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfigurationspring.autoconfigure.exclude[1]=org.springframework.boot.autoconfigure.mail.MailSenderAutoConfiguration      

如果你用的是 yaml 配置檔案,可以這麼寫:

spring:       autoconfigure:    exclude:      - org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration      - org.springframework.boot.autoconfigure.mail.MailSenderAutoConfiguration      

知道了這 4 種排除方法,我們使用 Spring Boot 的自動配置功能就遊刃有餘了,怎麼樣?都 get 到了不?建議轉發+收藏,再置頂公衆号,以後不迷路~

好了,今天的分享就到這裡,更多 Spring Boot 文章正在撰寫中,關注Java技術棧微信公衆号擷取第一時間推送。在公衆号背景回複:boot,還能擷取棧長整理的往期 Spring Boot 教程,都是實戰幹貨,以下僅為部分預覽。

Spring Boot 讀取配置的幾種方式

Spring Boot 如何做參數校驗?

Spring Boot 最核心的 25 個注解!

Spring Boot 2.x 啟動全過程源碼分析

Spring Boot 2.x 新特性總結及遷移指南

……