2012-03-01 8 views
6

Estoy trabajando en una aplicación web Spring 3.0.5 que accede a LDAP y dos bases de datos. Tengo propiedades con información de configuración para el servidor LDAP y las bases de datos, en applicationContext-security.xml y dispatcher-servlet.xml, pero me gustaría hacerlo para que cada servidor pueda tener diferentes propiedades de datos sin cambiar un archivo en WAR. ¿Puedo de alguna manera poner un archivo en otro lugar en el servidor y aún acceder desde mi aplicación?Trabajando con archivos de propiedades fuera de la guerra con Spring

Respuesta

6

Agregar a su contexto

<context:property-placeholder location="${envfile}"/> 

Esto cargará el archivo de propiedades ubicadas en $ {envfile}, una variable se puede establecer con parámetro de inicio de Java como éste

-Denvfile="file:/var/server/environment.properties" 

O tal vez en la secuencia de comandos de inicio de Tomcat

CATALINA_OPTS=" -Denvfile=file:/var/server/environment.properties" 

Los valores pueden ser recuperados en sus controladores usando los resortes Valor anotación de la siguiente manera:

@Values("${myvalue}") 
private String myValue; 

Tenga en cuenta que estas funciones requieren Primavera 3.1, más información here

Buena suerte!

+0

Estoy utilizando Spring versión 4. Parece que no hay anotación de valores. Usar la anotación de valor no rellena mis valores. Además, recibo un mensaje sobre el inicio de la aplicación que indica que el archivo de propiedad se ha cargado. 2017-04-05 17:27:51 INFO PropertySourcesPlaceholderConfigurer: 172 - Cargando el archivo de propiedades desde la URL [file: c: //java//resources//googleDocsValues.properties]. Alguna sugerencia ? – Ankit

0

Trate

<util:properties id="props" location="file:///path/to/server.properties"/> 
Cuestiones relacionadas