【发布时间】:2017-07-27 12:52:47
【问题描述】:
我想为任何环境设置活动配置文件主机,但找不到与环境无关的挂钩。
以下工厂将在构建应用程序上下文之前设置活动配置文件。
/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 上下文中使用!
使用 VM 参数作为 Java 应用程序和 JUnit 的测试有效 ...
-Dspring.profiles.active=myHost
我使用 war 打包的 spring-boot-starter-web 应用程序,应以编程方式设置配置文件并在任何环境中使用
- Java 应用程序
- JUnit
- Servlet 容器
如何以编程方式为任何环境设置配置文件?
我不想使用 VM 参数或环境变量,因为配置文件应由当前主机名设置。
【问题讨论】:
标签: spring spring-mvc spring-boot spring-profiles spring-boot-test