#java #spring #spring-boot #properties #yaml
#java #spring #spring-boot #свойства #yaml
Вопрос:
в моем проекте у меня есть приложение starter и spring-boot с этим приложением starter.
Starter содержит приложение.yaml-файл с несколькими свойствами. Например:
my:
test:
value: test
spring:
profiles:
active: development
я добавляю приложение.файл yaml в мое приложение spring-boot, и значения из yaml starter не вводятся в контекст.
Мой вопрос,
как я могу настроить 2 файла yaml в starter и приложении с возможностью переопределения значений в приложении spring-boot starter, например:
spring:
profiles:
active: testing
После слияния я хочу иметь:
spring.profiles.active=тестирование
my.test.value=тест
В настоящее время сбой с ошибкой: Вызвано: java.lang.Исключение IllegalArgumentException: не удалось разрешить заполнитель ‘my.test.value’ в значении «$ {my.test.value}»
Комментарии:
1. Вы читали это? docs.spring.io/spring-boot/docs/current/reference/html /…
Ответ №1:
Использовать spring.profiles.include
spring:
profiles:
active: testing
include: default
Или вы можете создать другой application-profile.yml
(например, application-testing.yml) и указать профиль при запуске приложения spring boot
Команда
java -jar name.jar spring.profiles.active=testing // it will pick the properties values from application-testing.yml
В файле yml используйте include для включения любых других профилей
application-testing.yml
spring:
profiles:
include: default
Комментарии:
1. спасибо, это решило почти все мои проблемы, одна вещь, если добавить в yaml spring-boot my: test: value: тестовое значение spring-boot В app value — это тест из starter.
2. извините, я не получил этот комментарий, пожалуйста, примите его, если это решило вашу проблему @Ridov
Ответ №2:
@Deadpool Одна проблема с переопределением, которую я создал для запуска приложения.yaml в starter и включить его в sprinng-boot с помощью include.
my:
test:
value: spring--123
spring:
profiles:
active: development
include: starter
Я ввел @Value
@Value("${my.test.value}")
private String testval;
и testval= тест (из starter) Есть ли у меня возможность создавать значения из приложения.yaml более первичный?
Спасибо
Комментарии:
1. да, большое спасибо, это фантастический подход, проблема только с переопределением, как ее решить?
2. в чем была проблема? я сказал, что показал этот подход в своем ответе, и я не знаю о проблеме, с которой вы столкнулись