首页 > 解决方案 > 具有单个属性文件的 Spring 配置文件属性继承

问题描述

我有一个application.yml包含多个弹簧轮廓的文件。我想将属性从一个配置文件继承到另一个配置文件。

在此示例中,我想将 prod 配置文件的属性继承到 prod1 中,而无需在 prod1 配置文件中再次写入公共属性。

  server:
    port: 8080

  spring:
    datasource:
      driver-class-name: com.mysql.cj.jdbc.Driver
    application:
      name: TestApp

    URL: "https://localhost:8181/Services/IDEA-Client-Partners"
  ---
  spring:
    profiles: dev
  ---
  spring:
    profiles: prod

  URL: https://www.ideaedu.org/Services/IDEA-Client-Partners

  ---
  spring:
    profiles: prod1

标签: spring-bootyaml

解决方案


如果激活了多个配置文件,则属性确实已经继承。例如,如果您激活prod,并且prod1所有 default < prod < prod1 属性将默认激活,被 prod 中的任何内容覆盖,并且 prod 被 prod1 中的任何内容覆盖。

鉴于你的例子,

 server:
    port: 8080

  spring:
    datasource:
      driver-class-name: com.mysql.cj.jdbc.Driver
    application:
      name: TestApp

    URL: "https://localhost:8181/Services/IDEA-Client-Partners"
  ---
  spring:
    profiles: dev
  ---
  spring:
    profiles: prod

  URL: https://www.ideaedu.org/Services/IDEA-Client-Partners
  prodProperty: test
  ---
  spring:
    profiles: prod1

  URL: https://localhost/

并激活所有配置文件,-Dspring.profiles.active=prod,prod1

将设置以下属性,

  • 端口 = 8080
  • 潜水员类名= com.mysql.cj.jdbc.Driver
  • 名称 = TestApp
  • prodProperty = 测试
  • URL = https://localhost/

在属性冲突的情况下,例如URL在本例中,最后读取的属性获胜,即,在这种情况下,读取的最后一个属性将在' ' 的定义中处于活动状态prod并且处于活动状态。prod1prod1


推荐阅读