En mi aplicación tengo frijoles anotados con @Profile("prod")
y @Profile("demo")
. El primero, como puede adivinar :), se usa en beans que se conectan a la base de datos de producción y el segundo anota beans que usan alguna base de datos falsa ( HashMap
o lo que sea), para acelerar el desarrollo.
Lo que me gustaría tener es el perfil predeterminado ( "prod"
) que se usará siempre si no se reemplaza por " algo más ".
Perfecto sería tener en mi web.xml
:
<context-param>
<param-name>spring.profiles.active</param-name>
<param-value>prod</param-value>
</context-param>
y luego anular esto con -Dspring.profiles.active="demo"
para que pueda hacer:
mvn jetty:run -Dspring.profiles.active="demo".
Pero, lamentablemente, esto no está funcionando. ¿Alguna idea de cómo podría lograr eso? Establecer -Dspring.profiles.active="prod"
en todos mis entornos no es una opción.
Defina su entorno de producción como perfil predeterminado en su web.xml
y si desea utilizar un perfil diferente, páselo como propiedad del sistema
fuente
spring.profiles.default=prod
enapplication.properties
, entoncesapplication-prod.properties
no va a ser cargado. Esto es contrario a la intuición.application.properties
archivo. Para saber que seapplication-prod.properties
debe utilizar tendrás que conocer el perfil. Eso es lo que hace este enfoque. Define perfiles fuera del contexto de primavera, ya seaweb.xml
(predeterminado) o mediante la variable de entorno (sobrescribe el predeterminado).application-default.properties
se cargó, también espero queapplication-newdefault.properties
también se cargue. No es un problema con su solución, es un problema con Spring ...Tengo el mismo problema, pero uso WebApplicationInitializer para configurar ServletContext mediante programación (Servlet 3.0+). Entonces hago lo siguiente:
fuente
También puede considerar eliminar el perfil PROD y usar @Profile ("! Demo")
fuente
Acerca de la configuración del perfil de producción predeterminado ya publicado @andih
La forma más fácil de establecer el perfil predeterminado para el complemento maven jetty es incluir el siguiente elemento en la configuración de su complemento:
fuente
Spring proporciona dos propiedades separadas al determinar qué perfiles están activos:
spring.profiles.active
y
spring.profiles.default
Si
spring.profiles.active
se establece, su valor determina qué perfiles están activos. Pero sispring.profiles.active
no está configurado, Spring buscaspring.profiles.default.
Si no se establece
spring.profiles.active
nispring.profiles.default
, entonces no hay perfiles activos, y solo se crean aquellos beans que no están definidos como en un perfil. Cualquier bean que no especifique un perfil pertenece aldefault
perfil.fuente
Puede configurar su web.xml como recurso filtrado y hacer que maven complete este valor desde la configuración del perfil de maven, eso es lo que hacemos.
en pom filtra todos los recursos (puede hacerlo si no tiene una marca $ {} en ellos)
en web.xml poner
en pom crea perfiles maven
Ahora puedes usar
o simplemente
-P DEMO
con cualquier comando expertofuente