#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
определении, в этом случае.