Spring Boot 排除自動配置的4種方法


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

比如:數據源、郵件,這些都是提供了自動配置的,我們需要排除 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 干貨。

方法2

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

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

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

@...
@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})
@SpringCloudApplication
public 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.DataSourceAutoConfiguration
spring.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技術棧微信公眾號獲取第一時間推送。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM