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

覆盖多个Spring活动配置文件的属性值

尉迟轶
2023-03-14

我有一个包含application.yml的spring boot应用程序。

application.yml内容:

spring:
  profiles:
    active: default,private
integrations:
  ecom:
    api-url: http://localhost:8080/com

应用程序的内容-private.yml

integrations:
  ecom:
    api-url: http://testenv:8080/com

根据我的理解,integrations:ecom:api-url是从application-private.yml加载的,即使默认概要文件也有相同的属性。

如果两个配置文件处于活动状态,是否将按照指定配置文件的顺序加载和使用属性?

我的订单:

-Dspring.profiles.active="default,private"

提前感谢。

共有3个答案

百里雅珺
2023-03-14

是的,配置文件将根据您如何确定/定义配置文件的系列加载。以下是它如何使用示例:

>

  • 你有application.yml,并且你已经将你的url定义为:“https://anish.com”现在,在相同的YML配置中,你正在将配置文件加载为“prod”,因此它尝试加载“application-prod.yml”。

    在您的"application-prod.yml"文件中,您的url被提到为"https://panthi.com",那么在这种情况下,您的url值将被"https://panthi.com"覆盖。

    因此,请确保您正在尝试根据要部署的环境匹配URL。如果您在生产环境中加载多个配置文件,请确保最后一个配置文件包含您需要的所有内容,或者确保您没有覆盖任何配置文件中的任何属性(除非需要)

  • 桑成荫
    2023-03-14

    对于您的示例,以下是Spring获取属性值的优先顺序(从最高优先级到最低优先级):

    1. <code>应用程序专用。yml在jar文件外部提供(例如,通过spring云配置)
    2. 应用程序。yml在jar文件之外提供(application.yml相当于applicationdefault.yml)
    3. <code>应用程序专用。yml在jar文件中提供
    4. 应用程序。jar文件中提供的yml

    因此,如果 jar 文件中有 application-private.yml 和 application.yml,则前者中的属性将覆盖后者中的属性。

    但是,如果应用程序是私有的。yml在jar中,但在应用程序中。yml在外面,后者将覆盖前者。

    请参阅有关外部属性优先级的官方文档。

    陆曜文
    2023-03-14

    在这种情况下,将首先加载application.yml中的所有属性,然后根据配置文件加载application-private.yml,从而从application.yml覆盖您的属性

     类似资料:
    • 在spring boot中,我有以下配置文件:application-email.yaml

    • 我们使用的是Spring boot。我们有三个环境、、。我们当前的配置结构 开发 同样,对于每个环境,我们都有一个yml和属性文件。经过一年的开发,现在配置文件的单个yml文件变成了一个大型单片配置文件。 对于下面这样的配置文件,可以有多个配置文件吗?

    • 寻找在Springboot应用程序中配置多个配置文件特定属性文件的最佳方法。下面是一个例子: -资源  · --application.properties  · · · · · --德夫             --application-dev.properties             --ldap-dev.properties             --Quartz-Dev.Prope

    • 各位, 在Ant(Jenkins)中构建我们的Android应用程序时,我们遇到了一个属性范围问题。这打破了我们的emma单元测试覆盖率。 我们使用全局构建。xml文件,包含以下行: 如您所见,它在单个项目中启动目标。我们使用构建。 在构建过程中,我打印emma的值。已启用,由emma目标设置为true。然而,当Ant达到调试目标时,emma。已启用的不再设置。这导致我们的测试在没有启用emma覆

    • 在我的应用程序中,我有以下属性文件: application.properties application-prod.properties 在里面我有同样的财产 Spring数据源。password=my dev password#用于默认的 spring。数据源。password=${PROD_DATABASE_password}#用于PROD文件 在服务器上,我像这样运行应用程序: java-

    • 我想在重新启动时通过外部配置文件覆盖Spring Boot应用程序中的几个配置。 我正在使用的内容:java-jar-dspring.profiles.active=${ENV}my-application.jar 这将在应用程序启动期间加载特定于配置文件的应用程序属性。让我们假设我有一个问题,我需要更改我的应用程序中的配置,我不想重新构建我的应用程序与更改的属性,我想要实现的是,我提供一个外部属