Как установить профиль Spring из системной переменной?

У меня есть проект Spring, который использует другой проект. Каждый проект имеет свой собственный Spring профиль, инициализирующийся из java-кода, используя applicationContext.xml и *.properties для каждого профиля. Я вставляю профиль из args[]. Проблема заключается в том, что второй проект использует конфигурацию по умолчанию для env из applicationContext.xml Я не могу ввести env из args[] во второй проект, и я попытался найти статью, которая объяснит, как работает профиль Spring.

  • Есть ли иерархия, на которой будет отображаться профиль, если по умолчанию не задано значение applicationContext.xml?
  • Является ли System var более сильным, чем applicationContext.xml конфигурация?
  • Что вы считаете лучшим решением моей задачи?

Статьи по этому предмету или даже примеры были бы наиболее оценены!! Заранее спасибо.

Ответ 1

Если вы предоставили свой JVM профиль Spring, проблем не должно быть:

java -Dspring.profiles.active=development -jar yourApplication.jar 

Также см. Spring -Documentation:

http://docs.spring.io/spring-boot/docs/current/reference/html/howto-properties-and-configuration.html

69.5 Установите активные профили Spring

В среде Spring для этого есть API, но обычно вы должны установить свойство System (spring.profiles.active) или среда ОС переменная (SPRING_PROFILES_ACTIVE). Например. запустите приложение с помощью -D (не забудьте поставить его перед основным классом или архивом jar):

$java -jar -Dspring.profiles.active = производство демо-0.0.1-SNAPSHOT.jar

В Spring Boot вы также можете установить активный профиль в application.properties, например.

spring.profiles.active = производство

Значение, установленное таким образом, заменяется свойством System или средой переменная, но не SpringApplicationBuilder.profiles() метод. Таким образом, последний Java API может использоваться для увеличения профилей без изменения значений по умолчанию.

См. главу 25 "Профили" в разделе "Spring" Дополнительная информация.

Ответ 2

SPRING_PROFILES_ACTIVE - это переменная среды для переопределения/выбора Spring профиля

Ответ 3

Если я запустил командную строку: java -Dspring.profiles.active=development -jar yourApplication.jar из моего каталога webapplication, он указывает, что путь неверен. Поэтому я просто определил профиль в ручном режиме в файле application.properties следующим образом:

spring.profiles.active=mysql 

или

spring.profiles.active=postgres

или

spring.profiles.active=mongodb

Ответ 4

Мое решение - установить переменную среды как spring.profiles.active=development. Чтобы все приложения, запущенные на этом компьютере, ссылались на эту переменную и запускали приложение. Порядок, в котором spring загружает свойства следующим образом

application.properties
system properties
environment variable