Как установить профиль 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