gpt4 book ai didi

spring - 如何以编程方式为任何环境设置事件配置文件?

转载 作者:行者123 更新时间:2023-12-01 01:53:09 25 4
gpt4 key购买 nike

我想为任何环境设置事件配置文件主机依赖,并且找不到与环境无关的 Hook 。

以下工厂将在构建应用程序上下文之前设置事件配置文件。

/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 参数或环境变量,因为配置文件应由当前主机名设置。

    最佳答案

    经过大量谷歌搜索后最简单的答案:)

    @SpringBootApplication
    public class ExampleMain2 {

    public static void main(String[] args) {
    ConfigurableEnvironment environment = new StandardEnvironment();
    environment.setActiveProfiles("dev");

    SpringApplication sa = new SpringApplication(ExampleMain2.class);
    sa.setEnvironment(environment);
    sa.setAdditionalProfiles("remote","live");
    sa.run(args);
    }
    }

    关于spring - 如何以编程方式为任何环境设置事件配置文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42646188/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com