从多个弹簧活动配置文件中覆盖属性值



我有一个带有应用程序的弹簧启动应用程序。

application.yml的内容:

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

application-private.yml的内容:

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

根据我的理解,集成:ecom:api-url即使默认配置配置文件也具有相同的属性。

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

我的订单:

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

预先感谢。

在您的示例中,以下是春季获得属性价值(最高到最低优先级(的优先顺序:

  1. application-private.yml提供外部 您的jar文件(例如,通过spring-config(
  2. application.yml提供的外部 您的jar file(application.yml等于application-default.yml(
  3. application-private.yml提供的 您的jar文件
  4. application.yml提供的 您的jar file

因此,如果您在JAR文件中具有application-private.yml和application.yml,则在后者中以前的覆盖属性中的属性。

但是,如果application-private.yml在jar内部,但是application.yml在外面,后者将覆盖前者。

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

在这种情况下,将首先加载> application.yml 中的所有属性。

是的,根据您确定/定义配置文件的系列,配置文件将被加载。这是它的工作方式:

  1. 您有应用程序。现在,从同一YML配置中,您正在加载" prod&quot",因此它试图加载" application-prod.yml.yml"。

  2. 在您的" application-prod.yml"中文件,您将URL提到为" https://panthi.com",然后在这种情况下,您的URL值将被" https://panthi.com&quot"覆盖。

因此,请确保您试图根据要部署的环境匹配URL。如果您在生产中加载了多个配置文件,请确保最后一个配置文件具有所需的一切,或者确保您不会在任何配置文件中覆盖任何属性(除非需要(

最新更新