Spring Boot 排除自动配置的 4 种方法,关键时刻很有用!

Spring Boot 提供的自动配置非常强大,某些情况下,自动配置的功能可能不符合我们的需求,需要我们自定义配置,这个时候就需要排除/禁用 Spring Boot 某些类的自动化配置了。

比如:数据源、邮件,这些都是提供了自动配置的,我们需要排除 Spring Boot 的自动化配置,交给我们自己来自定义,该如何做呢?

今天栈长给你介绍 4 种排除方式,总有一种能帮到你!

方法1

使用 @SpringBootApplication 注解的时候,使用 exclude 属性进行排除指定的类:

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

自动配置类不在类路径下的时候,使用 excludeName 属性进行排除指定的类名全路径:

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

这个注解集成了 @EnableAutoConfiguration 注解及其里面的参数,这个不用多解释了,具体看这篇文章:Spring Boot 最核心的 3 个注解详解。另外,关注Java技术栈微信公众号,在后台回复:boot,可以获取更多 Spring Boot 干货。

方法2

单独使用 @EnableAutoConfiguration 注解的时候:

 
  1. @...
  2. @EnableAutoConfiguration
  3. (exclude = {DataSourceAutoConfiguration.class, MailSenderAutoConfiguration.class})
  4. public class Application {
  5. // ...
  6. }

自动配置类不在类路径下的时候,使用 excludeName 属性进行排除指定的类名全路径:

 
  1. @...
  2. @EnableAutoConfiguration {"org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration", "org.springframework.boot.autoconfigure.mail.MailSenderAutoConfiguration"})
  3. public class Application {
  4. // ...
  5. }

方法3

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

 
  1. @...
  2. @EnableAutoConfiguration
  3. (exclude = {DataSourceAutoConfiguration.class, MailSenderAutoConfiguration.class})
  4. @SpringCloudApplication
  5. public class Application {
  6. // ...
  7. }

Spring Cloud 必须建立在 Spring Boot 应用之上,所以这个不用多解释了。

方法4

终极方案,不管是 Spring Boot 还是 Spring Cloud 都可以搞定,在配置文件中指定参数 spring.autoconfigure.exclude 进行排除:

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

或者还可以这样写:

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

如果你用的是 yaml 配置文件,可以这么写:

 
  1. spring:
  2. autoconfigure:
  3. exclude:
  4. - org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration
  5. - org.springframework.boot.autoconfigure.mail.MailSenderAutoConfiguration

知道了这 4 种排除方法,我们使用 Spring Boot 的自动配置功能就游刃有余了,怎么样?都 get 到了不?建议转发+收藏,再置顶公众号,以后不迷路~

  • 2
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值