Объединить 2 файла из приложения starter и spring-boot

#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. в чем была проблема? я сказал, что показал этот подход в своем ответе, и я не знаю о проблеме, с которой вы столкнулись