yml example application activeprofiles spring spring-boot spring-profiles

example - Configuración de Spring Profile variable



spring boot properties yml (4)

Tengo dos perfiles de primavera: desarrollo y test . Quiero configurar el perfil activo en el entorno del servidor, no quiero configurarlo en mi código para que cada vez que despliegue mi aplicación, el perfil se cargue en función del perfil en el servidor. ¿Cómo puedo hacer eso?


Hay al menos dos formas de hacerlo:

  1. definir el parámetro de contexto en web.xml - que rompe la declaración de "un paquete para todos los entornos". No recomiendo eso

  2. definir la propiedad del sistema -Dspring.profiles.active=your-active-profile

Creo que definir la propiedad del sistema es un enfoque mucho mejor. Entonces, ¿cómo definir la propiedad del sistema para Tomcat? En Internet podría encontrar muchos consejos como "modificar catalina.sh" porque no encontrarás ningún archivo de configuración para hacer cosas como esa. Modificar catalina.sh es una solución sucia e inmanejable. Hay una mejor manera de hacerlo.

Simplemente crea el archivo setenv.sh en el directorio bin de Tomcat con contenido:

JAVA_OPTS="$JAVA_OPTS -Dspring.profiles.active=dev"

y se cargará automáticamente durante la ejecución de catalina.sh start o run.

Aquí hay un blog que describe la solución anterior. La sección de comentarios es interesante ya que habla de más detalles.


Para Tomcat 8:

Linux:

Cree setenv.sh y actualícelo con lo siguiente:

exportar SPRING_PROFILES_ACTIVE = dev

Windows:

Cree setenv.bat y actualícelo con lo siguiente:

establecer SPRING_PROFILES_ACTIVE = dev


Simplemente puede configurar una propiedad del sistema en el servidor de la siguiente manera ...

-Dspring.profiles.active=test

Editar: para agregar esto a tomcat en eclipse, seleccione Run -> Run Configurations y elija la configuración de ejecución de Tomcat. Haga clic en la pestaña Arguments y agregue -Dspring.profiles.active = test al final de los VM arguments de VM arguments . Otra forma sería agregar la propiedad a tus catalina.properties en tu proyecto Servers , pero si lo agregas, omite el -D

Editar: para usar con Spring Boot , tiene una opción adicional. Puede pasar la propiedad como un argumento de programa si antepone la propiedad con dos guiones.

Aquí hay dos ejemplos usando un archivo jar ejecutable Spring Boot ...

Propiedad del sistema

[user@host ~]$ java -jar -Dspring.profiles.active=test myproject.jar

Argumento del programa

[user@host ~]$ java -jar myproject.jar --spring.profiles.active=test


como variable de entorno del sistema:

Windows: Inicio -> escriba "envi" seleccione variables de entorno y agregue una nueva: Name: spring_profiles_active Value: dev (o lo que sea suyo)

Linux: agregue la siguiente línea a / etc / environment bajo PATH:

spring_profiles_active=prod (o el perfil que sea)

luego también export spring_profiles_active=prod para que lo tenga en el tiempo de ejecución ahora.