簡體   English   中英

如何外部化@SpringBootApplication 配置?

[英]How to externalize @SpringBootApplication configuration?

我想外部化@SpringBootApplication(exclude...)選項,以獲得可重用的 class 或注釋,我可以將其放入以排除任何數據庫/休眠初始化。

所以,而不是寫:

@SpringBootApplication(
        exclude = {
                DataSourceAutoConfiguration.class,
                DataSourceTransactionManagerAutoConfiguration.class,
                HibernateJpaAutoConfiguration.class})
public class MainApp {
}

我想創建一個可以應用於我的@SpringBootApplication主 class 的注釋:

@Target(ElementType.TYPE)
@Retention(RetentionPolicy.RUNTIME)
@Inherited
@EnableAutoConfiguration(exclude = {
        DataSourceAutoConfiguration.class,
        DataSourceTransactionManagerAutoConfiguration.class,
        HibernateJpaAutoConfiguration.class})
@Configuration
public @interface ExcludeDataSources {
}

然后通過注解啟用此功能:

@SpringBootApplication
@ExcludeDataSources
public class MainApp {
}

問題:注釋方法不起作用,spring 仍然嘗試加載數據庫。 為什么?

我的最終目標是擁有多個配置文件,其中只有一個加載數據庫。

我可以通過添加僅在特定條件下執行的附加@EnableAutoConfiguration來管理它。 這樣我可以動態排除數據庫配置,同時保持干凈的基礎主要@SpringBootConfiguration class。

public class DataSourceConfig {
    @Configuration
    @Conditional(MyCondition.class)
    @EnableAutoConfiguration(exclude = {
            DataSourceAutoConfiguration.class,
            DataSourceTransactionManagerAutoConfiguration.class,
            HibernateJpaAutoConfiguration.class})
    static class ExcludeDataSource {
    }
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM