En mi aplicación Spring Boot, quiero crear un archivo de propiedades específicas del entorno. El tipo de empaquetado de mi aplicación en guerra y lo estoy ejecutando en tomcat integrado. Utilizo pts y ejecuto la principal desde la misma pts.
- ¿Puedo tener un archivo de propiedades específicas del entorno como la aplicación - $ {env-value} .properties?
En el caso anterior, env-value tendrá valores como local / devl / test / prod
¿Dónde establecer el archivo de valor de env? Para local, puedo configurarlo como el argumento jvm a través de sts
Quién lee application.properties en la aplicación Spring Boot.
¿Cómo cargar el archivo de propiedades específicas del entorno? Por ejemplo, si configuro el uid, pwd, esquema, etc. de la base de datos en el archivo de propiedades específico del entorno, en ese caso, ¿la fuente de datos podrá comprender las propiedades que contiene?
¿Puedo usar el archivo application.properties y application-local.properties al mismo tiempo?
fuente
spring.active.profiles
use-Dspring.active.profiles=local
. en lugar.Respuestas:
Spring Boot ya tiene soporte para propiedades basadas en perfiles .
Simplemente agregue un
application-[profile].properties
archivo y especifique los perfiles a usar usando laspring.profiles.active
propiedad.-Dspring.profiles.active=local
Esto cargará el
application.properties
y elapplication-local.properties
con las últimas propiedades que prevalecen sobre el primero.fuente
Sí tu puedes. Dado que está utilizando Spring, consulte la
@PropertySource
anotación.Anote su configuración con
@PropertySource("application-${spring.profiles.active}.properties")
Puede llamarlo como quiera y agregar varios archivos de propiedad si también lo desea. Puede ser bueno si tiene más conjuntos y / o valores predeterminados que pertenecen a todos los entornos (también se puede escribir con @PropertySource {..., ..., ...}).
@PropertySources({ @PropertySource("application-${spring.profiles.active}.properties"), @PropertySource("my-special-${spring.profiles.active}.properties"), @PropertySource("overridden.properties")})
Entonces puede iniciar la aplicación con el entorno
-Dspring.active.profiles=test
En este ejemplo, el nombre se reemplazará con application-test-properties y así sucesivamente.
fuente
$spring.profiles.active}
es una cadena separada por matriz / coma. Por lo tanto, es posible que no haga lo que usted espera / desea que haga cuando hay varios perfiles activos.podemos hacer así:
en application.yml :
spring: profiles: active: test //modify here to switch between environments include: application-${spring.profiles.active}.yml
en application-test.yml :
server: port: 5000
y en application-local.yml :
server: address: 0.0.0.0 port: 8080
luego, Spring Boot iniciará nuestra aplicación como deseamos.
fuente
Mi punto, de esta manera no se pide al desarrollador que cree todo el entorno relacionado de una sola vez, lo que genera el riesgo de exponer la configuración de producción al desarrollador final.
según 12-Factor, no debe ser específico del medio ambiente, residir solo en el medio ambiente.
¿Cómo lo hacemos para CI CD?
fuente