Em meu aplicativo, tenho beans anotados com @Profile("prod")
e @Profile("demo")
. O primeiro, como você pode imaginar :), é usado em beans que se conectam ao banco de dados de produção e o segundo anota os beans que usam algum banco de dados falso ( HashMap
ou qualquer outro) - para tornar o desenvolvimento mais rápido.
O que eu gostaria de ter é o perfil padrão ( "prod"
) que será usado sempre se não for substituído por " outra coisa ".
Perfeito seria ter em meu web.xml
:
<context-param>
<param-name>spring.profiles.active</param-name>
<param-value>prod</param-value>
</context-param>
e, em seguida, substituir isso com -Dspring.profiles.active="demo"
para que eu pudesse fazer:
mvn jetty:run -Dspring.profiles.active="demo".
Mas, infelizmente, isso não está funcionando. Alguma ideia de como eu poderia conseguir isso? Definir -Dspring.profiles.active="prod"
em todos os meus ambientes não é uma opção.
Defina seu ambiente de produção como perfil padrão em seu web.xml
e se você quiser usar um perfil diferente, passe-o como propriedade do sistema
fonte
spring.profiles.default=prod
emapplication.properties
, entãoapplication-prod.properties
não será carregado. Isso é contra-intuitivo.application.properties
arquivo. Para saber o queapplication-prod.properties
deve ser usado, você terá que conhecer o perfil. É isso que essa abordagem faz. Ele define perfis fora do contexto da molaweb.xml
(padrão) ou via variável de ambiente (sobrescrever o padrão).application-default.properties
foi carregado, também espero queapplication-newdefault.properties
seja carregado. Não é um problema com a sua solução, é um problema com o Spring ...Eu tenho o mesmo problema, mas eu uso WebApplicationInitializer para configurar o ServletContext programaticamente (Servlet 3.0+). Então, eu faço o seguinte:
fonte
Você também pode considerar a remoção do perfil PROD e usar @Profile ("! Demo")
fonte
Sobre a configuração do perfil de produção padrão já postado @andih
A maneira mais fácil de definir o perfil padrão para o plugin maven jetty é incluir o elemento abaixo na configuração do plugin:
fonte
Spring fornece duas propriedades separadas ao determinar quais perfis estão ativos:
spring.profiles.active
e
spring.profiles.default
Se
spring.profiles.active
estiver definido, seu valor determinará quais perfis estão ativos. Mas sespring.profiles.active
não estiver definido, o Spring olha paraspring.profiles.default.
Se nem
spring.profiles.active
nemspring.profiles.default
estiver definido, não haverá perfis ativos e apenas os beans que não estão definidos como estando em um perfil são criados. Qualquer bean que não especifique um perfil pertence aodefault
perfil.fonte
Você pode configurar seu web.xml como recurso filtrado e ter esse valor preenchido pelo maven nas configurações de perfil do maven - é isso o que fazemos.
no pom filtrar todos os recursos (você pode fazer isso se não tiver $ {} marcação neles)
em web.xml colocar
em pom criar perfis maven
Agora você pode usar
ou simplesmente
-P DEMO
com qualquer comando mavenfonte