В моем приложении есть bean-компоненты, помеченные значками @Profile("prod")
и @Profile("demo")
. Первый, как вы можете догадаться :), используется на bean-компонентах, которые подключаются к производственной БД, а второй аннотирует bean-компоненты, которые используют какую-то поддельную БД ( HashMap
или что-то еще) - чтобы ускорить разработку.
Я бы хотел иметь профиль по умолчанию ( "prod"
), который будет использоваться всегда, если он не заменен « чем-то еще ».
Идеально было бы иметь в моем web.xml
:
<context-param>
<param-name>spring.profiles.active</param-name>
<param-value>prod</param-value>
</context-param>
а затем переопределите это, -Dspring.profiles.active="demo"
чтобы я мог сделать:
mvn jetty:run -Dspring.profiles.active="demo".
Но, к сожалению, это не работает. Есть идеи, как я могу этого добиться? Установка -Dspring.profiles.active="prod"
во всех моих средах не вариант.
Определите свою производственную среду как профиль по умолчанию в вашем web.xml
и если вы хотите использовать другой профиль, передайте его как системное свойство
источник
spring.profiles.default=prod
вapplication.properties
, тоapplication-prod.properties
не будет загружен. Это противоречит интуиции.application.properties
файле. Чтобы знать, чтоapplication-prod.properties
следует использовать, вам необходимо знать профиль. Вот что делает этот подход. Он определяет профили вне контекста Spring либо черезweb.xml
(по умолчанию), либо через переменную среды (перезаписать по умолчанию).application-default.properties
загрузка, я также ожидаю, чтоapplication-newdefault.properties
она также будет загружена. Это не проблема с вашим решением, это проблема со Spring ...У меня такая же проблема, но я использую WebApplicationInitializer , чтобы программно настроить ServletContext (Servlet 3.0+). Итак, я делаю следующее:
источник
Вы также можете удалить профиль PROD и использовать @Profile ("! Demo")
источник
О настройке производственного профиля по умолчанию уже опубликовано @andih
Самый простой способ установить профиль по умолчанию для плагина maven jetty - включить следующий элемент в конфигурацию вашего плагина:
источник
Spring предоставляет два отдельных свойства при определении активных профилей:
spring.profiles.active
и
spring.profiles.default
Если
spring.profiles.active
установлен, то его значение определяет, какие профили активны. Но еслиspring.profiles.active
не установлен, то Spring смотрит наspring.profiles.default.
Если ни
spring.profiles.active
ниspring.profiles.default
не задано, то активных профилей нет, и создаются только те бины, которые не определены как находящиеся в профиле. Любой бин, который не указывает профиль, принадлежитdefault
профилю.источник
Вы можете настроить свой web.xml как отфильтрованный ресурс, и maven будет заполнять это значение из настроек профиля maven - это то, что мы делаем.
в pom фильтруйте все ресурсы (вы можете сделать это, если в них нет отметки $ {})
в web.xml положить
в pom создать профили maven
Теперь вы можете использовать
или просто
-P DEMO
с помощью любой команды mavenисточник