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技術棧微信公眾號獲取第一時間推送。