Мое намерение состоит в том, чтобы иметь два профиля в приложении весенней загрузки - разработку и производство. Профиль разработки предназначен только для переопределения некоторых переменных производственного профиля (например, базы данных в памяти вместо базы данных в облаке). Поскольку я ожидаю, что в будущем в производственный профиль будут внесены некоторые изменения, дублирование переменных в профиле разработки не кажется решением.
Итак, в Spring Reference Я читал, что spring.profiles.include
должен добавлять свойства только из профиля, на который указывает ссылка.
Иногда полезно иметь специфические для профиля свойства, которые дополняют активные профили, а не заменяют их. Свойство
spring.profiles.include
можно использовать для безусловного добавления активных профилей.
Однако из того, что я проверил, это скорее отменяет его. Итак, при наличии двух профилей foo и bar в отдельных файлах yaml:
приложение-foo.yaml:
myproperty: 44
приложение-bar.yaml:
spring:
profiles:
include: foo
active: bar,foo
myproperty: 55
И установка переменной -Dspring.profiles.active=bar
в IDE, значение времени выполнения myproperty
равно 44. Это означает, что bar
переопределяется с помощью foo
, который должен был только добавлять свойства, но не переопределять их. При запуске приложения получаю:
Активны следующие профили: foo,bar
Я добавил spring.profiles.active=bar
к application-bar.yaml
, как было предложено в этом ответе в другом вопросе, но это не имеет никакого эффекта - нет никакой разницы, когда свойство есть или нет (я также пытался использовать тире вместо значений, разделенных запятыми).
Мой вопрос в том, как это должно работать (тогда Spring Reference вводит в заблуждение)? Если да, то есть ли решения для этого?
Добавление ссылки на исходный код приложения на github.