弹簧引导提供的自动配置非常强大,某些情况下,自动配置的功能可能不符合我们的需求,需要我们自定义配置,这个时候就需要排除/禁用弹簧引导某些类的自动化配置了。
比如:数据源,邮件,这些都是提供了自动配置的,我们需要排除弹簧引导的自动化配置,交给我们自己来自定义,该如何做呢?
使用@SpringBootApplication注解的时候,使用排除属性进行排除指定的类:
@SpringBootApplication(排除={DataSourceAutoConfiguration。类,MailSenderAutoConfiguration.class}) 公共类应用程序{//? }
自动配置类不在类路径下的时候,使用excludeName属性进行排除指定的类名全路径:
@SpringBootApplication (excludeName={" org.springframework.boot.autoconfigure.jdbc。DataSourceAutoConfiguration”、“org.springframework.boot.autoconfigure.mail.MailSenderAutoConfiguration”}) 公共类应用程序{//? }
这个注解集成了@EnableAutoConfiguration注解及其里面的参数,这个不用多解释了,具体看这篇文章:弹簧引导最核心的3个注解详解。另外,关注Java技术栈微信公众号,在后台回复:启动,可以获取更多弹簧引导干货。
单独使用@EnableAutoConfiguration注解的时候:
@…… @EnableAutoConfiguration (排除={DataSourceAutoConfiguration。类,MailSenderAutoConfiguration.class}) 公共类应用程序{//? }
自动配置类不在类路径下的时候,使用excludeName属性进行排除指定的类名全路径:
@…… org.springframework.boot.autoconfigure.jdbc @EnableAutoConfiguration {”。DataSourceAutoConfiguration”、“org.springframework.boot.autoconfigure.mail.MailSenderAutoConfiguration”}) 公共类应用程序{//? }
使用春云和@SpringCloudApplication注解的时候:
@…… @EnableAutoConfiguration (排除={DataSourceAutoConfiguration。类,MailSenderAutoConfiguration.class}) @SpringCloudApplication 公共类应用程序{//? }
春云必须建立在春天引导应用之上,所以这个不用多解释了。
终极方案,不管是弹簧引导还是春天的云都可以搞的定,在配置文件中指定参数spring.autoconfigure。排除进行排除:
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配置文件,可以这么写:
春: 可以使用autoconfigure: 排除: ——org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration ——org.springframework.boot.autoconfigure.mail。MailSenderAutoConfiguration
知道了这4种排除方法,我们使用弹簧引导的自动配置功能就游刃有余了,怎么样?都让到了不?