Наследование свойств профиля Spring с помощью одного файла свойств

#spring-boot #yaml

#spring-загрузка #yaml

Вопрос:

У меня есть один application.yml файл, содержащий несколько профилей spring. Я хочу наследовать свойства от одного профиля к другому.

В этом примере я хочу наследовать свойства профиля 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
 

Комментарии:

1. Почему бы не иметь отдельные файлы свойств для каждого профиля с одним базовым файлом свойств с общей конфигурацией?

2. @Smajl поскольку у меня так много профилей, если я создам отдельные файлы свойств, будет так много файлов. вот почему я создал один файл.

Ответ №1:

свойства уже наследуются, если активировано несколько профилей. Например, если вы активируете prod , и prod1 все свойства по умолчанию < 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
  • diver-class-name= com.mysql.cj.jdbc.Driver
  • имя = TestApp
  • prodProperty = тест
  • URL = https://localhost /

В случае конфликтующих свойств, например URL , в этом примере, выигрывает последнее прочитанное свойство, т.Е. Когда prod и prod1 активны, последнее прочитанное свойство будет в prod1 определении, в этом случае.