Spring Boot 提供的自动配置非常强大,某些情况下,自动配置的功能可能不符合我们的需求,需要我们自定义配置,这个时候就需要排除/禁用 Spring Boot 某些类的自动化配置了。
比如:数据源、邮件,这些都是提供了自动配置的,我们需要排除 Spring Boot 的自动化配置,交给我们自己来自定义,该如何做呢?
今天给你介绍 4 种排除方式,总有一种能帮到你!
使用 @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 干货。
单独使用 @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 {
// ...
}
使用 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 到了不?
亿速云「云服务器」,即开即用、新一代英特尔至强铂金CPU、三副本存储NVMe SSD云盘,价格低至29元/月。点击查看>>
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。