我想設置任何環境依賴的活動配置文件主機,並且找不到獨立於環境的鉤子。如何以編程方式爲任何環境設置活動配置文件?
下面的工廠將在應用程序上下文構建之前設置活動配置文件。
/META-INF/spring.factories
org.springframework.context.ApplicationContextInitializer=MyApplicationContextInitializer
MyApplicationContextInitializer.java
public class MyApplicationContextInitializer implements ApplicationContextInitializer<ConfigurableApplicationContext> {
@Override
public void initialize(ConfigurableApplicationContext ca) {
ConfigurableEnvironment environment = ca.getEnvironment();
environment.addActiveProfile("myHost");
}
}
如果這個例子是由JUnit的一個模擬環境中執行...
* Test.java
...
@RunWith(SpringRunner.class)
@SpringBootTest
@AutoConfigureMockMvc
...
...以下內容將被記錄。
...
... RestControllerTests : The following profiles are active: myHost
...
但輪廓MYHOST沒有被激活默認的配置文件將在JUnit中的上下文中使用!
測試爲Java應用程序和JUnit與VM參數工作...
-Dspring.profiles.active=myHost
我用戰爭打包彈簧引導起動器的Web應用程序和編程的個人資料將被設置在任何環境中使用
- Java應用程序
- 的JUnit
- Servlet容器
如何爲任何環境以編程方式設置配置文件?
我不想使用VM參數或environemt變量,因爲配置文件應由當前主機名設置。
該解決方案適用於運行作爲唯一的Java應用程序因爲'main'方法不會在servlet容器或JUnit-Tests中使用。 –
@mg。用另一個可能幫助你的選項編輯。 – Tom
「postProcessBeanFactory」將在活動配置文件已設置後調用。我得到日誌的配置文件'沒有活動配置集,回落到默認配置文件:默認'和日誌是@'... oswcsGenericWebApplicationContext:刷新org.s[email protected]2df6226d:啓動日期[.. ];我的斷點在'postProcessBeanFactory'中的上下文層次結構的根。 –