[英]How to work with @SpringBootApplication and @Configuration, Datasource
[英]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.