2012-03-01 6 views
6

Sto lavorando a un'applicazione Web Spring 3.0.5 che accede a LDAP e due database. Ho una proprietà con le informazioni di configurazione per il server LDAP e quei database, in applicationContext-security.xml e dispatcher-servlet.xml, ma vorrei farlo in modo che ogni server possa avere proprietà di dati differenti senza modificare un file in WAR. Posso in qualche modo mettere un file da qualche altra parte sul server e accedervi comunque dalla mia applicazione?Utilizzo di file di proprietà all'esterno della guerra con Spring

risposta

6

aggiungere questo al vostro contesto

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

Questo caricherà le proprietà di file che si trova a $ {envfile}, una variabile è possibile impostare con paramater avvio di Java come questo

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

O forse nello script di avvio di Tomcat

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

I valori possono essere recuperati nel vostro controller utilizzando Springs Valore annotazione in questo modo:

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

Si prega di notare che queste caratteristiche richiedono Primavera 3.1, ulteriori informazioni here

Buona fortuna!

+0

Sto usando Spring versione 4. Sembra che non ci sia annotazione Valori. L'utilizzo dell'annotazione Valore non compila i miei valori. Inoltre, ricevo il messaggio all'avvio dell'applicazione che il file delle proprietà è stato caricato. 2017-04-05 17:27:51 INFO PropertySourcesPlaceholderConfigurer: 172 - Caricamento del file di proprietà dall'URL [file: c: //java//resources//googleDocsValues.properties]. Eventuali suggerimenti ? – Ankit

0

Prova

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