унификация конфигурации Java Spring - PullRequest
0 голосов
/ 11 октября 2019

Контуры моего приложения растут. Я ищу решение для хранения конфигураций для каждой цепи. Я думаю, что такой формат конфигурации был бы хорош:

someHost:
  test: testUrl
  local: localUrl
  dev: devUrl
  qa: qaUrl
  stage: stageUrl
  prod: prodUrl

Пока у меня нет понимания, как правильно настроить мое приложение, чтобы оно правильно работало с необходимыми конфигурациями в зависимости от профиля. ,Есть ли у вас какое-либо решение?

Стек: Java, Spring Boot 2, Kubernetes

Ответы [ 3 ]

1 голос
/ 11 октября 2019

Чтобы сохранить формат, который вы предлагаете, вам нужно будет создать другую переменную, в которой вы будете настраивать префикс.

hostPrefix: dev
someHost:
  test: testUrl
  local: localUrl
  dev: devUrl
  qa: qaUrl
  stage: stageUrl
  prod: prodUrl

Затем введите @Value в обязательное поле с внутренними заполнителями:

@Value("${someHost.${hostPrefix}}")
private String url;

Вот и все. В текущем решении оно будет разрешено до ${someHost.dev}, что будет разрешено до devUrl. Вы также можете использовать пружинный профиль для этого:

@Value("${someHost.${spring.profiles}}")
private String url;
0 голосов
/ 11 октября 2019

Похоже, у вас уже есть конфигурация в формате yml. Затем вы можете использовать такие пружинные профили, как это:

spring:
  profiles:
    active: dev
someHost:
  url: devUrl
---
spring:
  profiles: test
someHost:
  url: testUrl
---
spring:
  profiles: qa
someHost:
  url: qaUrl

И затем вы создаете @Configuration:

@Configuration
@ConfigurationProperties("someHost")
public class SomeHostConfig {

    private String url;
}

Или вы можете использовать любое поле управляемого компонента и добавить его с помощью @Value:

@Value("${someHost.url}")
private String someHostUrl;

Затем вы запускаете приложение с профилем. Например, в Maven это будет:

mvn spring-boot:run -Dspring.profiles.active=dev
0 голосов
/ 11 октября 2019

Для этого вы можете использовать Профили Spring . Определите профиль для каждой среды, и тогда он может иметь свой собственный набор свойств и компонентов

...