我開發它具有以下封裝結構的彈簧啓動web應用..如何排除一些@Configuration只有在春天開機使用@Import導入
- com.myname.configs
- CommonConfiguration.java
- DevConfiguration.java
- ProdConfiguration.java
- SomeOtherConfiguration.java
- com.myname.profiles
- DevProfile.java
- ProdProfile.java
所有這些類是@Configuration類,但DevProfile.java和ProdProfile.java也具有@Profile和@Import註釋。
CommonConfiguration ..
@Configuration
public class CommonConfiguration {
//commmon configs/beans..
}
DevConfiguration ..
@Configuration
@Profile("dev")
public class DevConfiguration {
@Bean
//dev specific beans..
}
DevProfile ..
@Configuration
@Import(value = {CommonConfiguration.class, DevConfiguration.class})
@Profile("dev")
public class DevProfile {}
ProdProfile ..
@Configuration
@Import(value = {CommonConfiguration.class, ProdConfiguration.java})
@Profile("prod")
public class ProdProfile {}
由於某些原因,即使使用-Dspring.profile.active = prod,也會創建DevConfiguration的bean。唯一的解決方法是向DevConfiguration.java添加@Profile(「dev」)註釋
有沒有辦法在@Import批註中爲類創建bean?在一個Profile類中管理Imports比在各個Configuration類中添加Profile要合理。
我正在尋找一個方式做什麼@Aaron Digulla建議在這裏爲#1 How to exclude some @Configuration file in Spring?
我認爲如果@Configuration類在組件掃描路徑中,它們將被創建,除非您告訴容器將其排除。你如何註釋DevConfiguration? – efekctive
更重要的是:@Configuration類在錯誤的配置文件中? – efekctive
你正在掃描哪些軟件包? –