当前位置: 首页 > 知识库问答 >
问题:

在运行时应用Spring概要文件,而无需重新启动应用程序

郁景龙
2023-03-14

我在Spring boot应用程序中定义了多个配置文件,通常用于不同的场景。

在运行时,我正在寻找一种方法来激活配置文件,而不需要重新启动应用程序。

我知道Spring cloud config提供了一种通过使用actuator/Refreshendpoint重新启动应用程序来外部化配置和重新加载的方法。

我将Spring Cloud Config为应用程序维护的外部化配置中的属性Spring.profiles.active=profileName更改为不同的配置文件值,然后使用/refreshendpoint重新加载。但是,变化并没有得到反映。我使用了Spring cloud配置的本地配置文件。

但是,我需要在应用程序启动后使用Spring cloud Config/Actuator或其他一些机制更改配置文件或添加配置文件。

有什么方法可以达到我的要求。

共有1个答案

洪逸清
2023-03-14

配置文件用于决定在启动时创建哪些bean。因此,如果要在不同的配置文件集下运行,您必须重新启动。

你到底想达到什么目的?

如果您希望运行时选择bean,那么编写一个类,它注入您想从中挑选的所有可用bean,然后通过基于环境属性的方法选择您想在运行时使用的bean,您可以通过Spring Cloud Config/refreshendpoint或仅通过数据库列刷新环境属性。

编写确定特定配置文件是否处于活动状态的方法(环境是您的注入环境)

boolean isProfileActive(String profile) { 
   return Arrays.asList(environment.getActiveProfiles()).contains(profile);
}

然后将其用于可缓存注释上的spel条件

 类似资料:
  • 我下面介绍了spring的RESTAPI,但我无法让它在tomcat服务器上运行(尝试了tomcat 7和9)。在eclipse中,我确实以- 编辑 尝试在项目上安装mvn,然后java-jarproject.jar 编辑2 我将项目导出到一个可运行的jar(并将所需的库打包到生成的jar中),但是 提供 编辑3 我没有删除我的m2,因为那里有很多东西,但我现在通过eclipse的spring工具

  • 问题内容: 我写了一个Qt应用程序,它将在Linux上运行。它应该在启动时运行。 它应该在每个Linux- Suse,RedHat等上运行。 我应该写什么脚本,放在哪里? 我根本不知道如何编写脚本,因此,如果您附上示例,我将不胜感激。 问题答案: 您需要为您的应用程序创建一个桌面入口文件(请参阅此处),并将其放置在用户目录中。 Window Manager启动时,该目录中的任何桌面条目文件都将被执

  • 无法使用maven运行spring启动应用程序。当我运行命令mvn spring boot:run时,我收到:,但在pom中。我写的xml,其中是使用该示例的主要类: 我有这个项目结构: 我希望使用spring boot和maven运行我的应用程序。但现在它不起作用了。

  • 尝试完成Spring Boot教程:https://Spring.io/guides/gs/spring-boot/#initial 以下是我的课程: 和pom.xml: 当我尝试使用以下命令运行它时:“mvn package&&java-jar target/gs-spring-boot-0.1.0.jar”,我得到的是: “-dmaven.home=C:\program files\jetbr

  • 这是我第一次使用Javafx与Spring Boot我有以下错误时运行我的应用程序 主课 } 控制器类 } pom.xml http://maven.apache.org/xsd/maven-4.0.0.xsd" 拜托这是怎么回事。为什么org.springframework.boot:sping-boo-maven-plugin:2.0.0。释放:运行不能被执行? 场景fxml代码 我正在用Ne