spring boot EnableAutoConfiguration exclude 無效

首先講一下SpringBootApplication註解
源碼定義爲

@Target(ElementType.TYPE)
@Retention(RetentionPolicy.RUNTIME)
@Documented
@Inherited
@SpringBootConfiguration
@EnableAutoConfiguration
@ComponentScan(excludeFilters = {
		@Filter(type = FilterType.CUSTOM, classes = TypeExcludeFilter.class),
		@Filter(type = FilterType.CUSTOM, classes = AutoConfigurationExcludeFilter.class) })
public @interface SpringBootApplication {

所以這一個註解就相當於配置了EnableAutoConfiguration
如果在自己的項目裏 SpringBootApplication 和 EnableAutoConfiguration 都配置了 就會有問題。這個是我最開始的理解
但是試了一下 把SpringBootApplication去掉 然後改成如下的形式 還是不行

// @SpringBootApplication
@EnableTransactionManagement // 開啓註解式事務 , DataSourceTransactionManagerAutoConfiguration.class
@EnableAutoConfiguration(exclude = { DataSourceAutoConfiguration.class, DataSourceTransactionManagerAutoConfiguration.class, HibernateJpaAutoConfiguration.class })
@EnableAspectJAutoProxy(proxyTargetClass = true, exposeProxy = true)
@Configuration
@ComponentScan(includeFilters={}, excludeFilters = { @Filter(type = FilterType.CUSTOM, classes = TypeExcludeFilter.class),
		@Filter(type = FilterType.CUSTOM, classes =  AutoConfigurationExcludeFilter.class)})
// @ComponentScan
// @Configuration //這是一個配置類,與@Service、@Component的效果類似。spring會掃描到這個類,@Bean纔會生效,將ThreadPoolBean這個返回值類註冊到spring上下文環境中
// @EnableConfigurationProperties(MyWebServerConfigurationProperties.class) //通過這個註解, 將MyWebServerConfigurationProperties這個類的配置到上下文環境中,本類中使用的@Autowired註解注入才能生效
public class  XxxApplication extends BaseApplication {

網上查資料 最終的解決辦法如下

spring:
  application:
    name: coffee
  autoconfigure.exclude: org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration, org.springframework.boot.autoconfigure.jdbc.DataSourceTransactionManagerAutoConfiguration
 

具體原因還沒找到,先記錄一下 ,以後在查找原因

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章