绑定完请刷新页面
取消
刷新

分享好友

×
取消 复制
Spring Boot 排除自动配置的 4 种方法,关键时刻很有用
2019-12-11 11:37:57

原文地址:https://dwz.cn/KEBZ7HFW

作者:栈长

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

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

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


方法一:

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

@...

@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 {

// ...

}

这个注解集成了 @EnableAutoConfiguration 注解及其里面的参数,这个不用多解释了。

方法二:

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

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

org.springframework.boot.autoconfigure.mail.MailSenderAutoConfiguration

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

spring.autoconfigure.exclude[0]=org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration

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

方法三:

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

@...

@EnableAutoConfiguration

(exclude = {DataSourceAutoConfiguration.class, MailSenderAutoConfiguration.class})

@SpringCloudApplication

public class Application {

// ...

}

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

方法四:

终极方案,不管是 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 到了不?

分享好友

分享这个小栈给你的朋友们,一起进步吧。

龍门客栈
创建时间:2019-01-12 10:22:35
来新手村升级打怪啊!
展开
订阅须知

• 所有用户可根据关注领域订阅专区或所有专区

• 付费订阅:虚拟交易,一经交易不退款;若特殊情况,可3日内客服咨询

• 专区发布评论属默认订阅所评论专区(除付费小栈外)

栈主、嘉宾

查看更多
  • 栈栈
    栈主
  • gaokeke123
    嘉宾
  • ?
    嘉宾
  • 飘絮絮絮丶
    嘉宾

小栈成员

查看更多
  • 一号管理员
  • phyllis666
  • cynthia
  • 老七
戳我,来吐槽~