PropertyPlaceholderConfigurer
è la risposta , tuttavia, immagino che ti piacerebbe che ciò accada senza la necessità di aggiornare il file delle proprietà per ogni ambiente.
Il mio suggerimento sarebbe quindi la seguente
- Usa
PropertyPlaceholderConfigurer
, ma non creare un file di proprietà
- Per impostazione predefinita,
PropertyPlaceholderConfigurer
primi tentativi per trovare un valore in un file di proprietà, ma se non funziona, cercherà uno in proprietà del sistema
Quindi tutto quello che dovete fare è quello di definire entrambi i fagioli lo stesso modo in cui si sta facendo, ad esempio dev
e stag
.. che è un buon approccio dato che stai mostrando chiaramente le diverse configurazioni ... sarebbe di grande aiuto se tu aggiungessi qualche alias per mostrare chiaramente l'impostazione che vuoi usare.
Quindi passare una proprietà di sistema che definisce la modalità in cui ci si trova ... e idealmente impostare PropertyPlaceholderConfigurer
per utilizzare le proprietà di sistema.
Quindi .. il vostro config sarebbe simile a questa
<bean
class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer"
systemPropertiesMode="2"/>
<bean id="Mybean" class="Bean">
<property name="config" ref="${launch.mode}"/>
</bean>
<bean id="dev" name="dev_mode" class="Dev">
<property name="x" ref="Dev1">
<property name="y" ref="Dev2">
<property name="z" ref="Dev3">
</bean>
<bean id="stag" name="staging_mode" class="Dev">
<property name="x" ref="Stag1">
<property name="y" ref="Stag2">
<property name="z" ref="Stag3">
</bean>
È quindi possibile passare nella proprietà all'avvio nel modo seguente
-D<property-name>=<value>
Quindi in questo caso devi usare
-Dlaunch.mode=dev_mode
O
-Dlaunch.mode=staging_mode
E non sarà necessario toccare alcun file di configurazione.
Solo una nota ulteriore sul systemPropertiesMode
, valori accettati sono i seguenti:
- 0 - mai guardare nelle proprietà di sistema
- 1 - proprietà di sistema uso come ripiego (cioè se non si trova nei file di proprietà)
- 2 - proprietà di sistema sostituiscono sempre (la modalità che sto suggerendo)
Speranza che aiuta :)
Nota: questo consiglio si applica solo alla primavera < 3.1, poiché dalla 3.1 in poi, l'approccio consigliato è quello di utilizzare @Profile
fonte
2012-02-07 21:14:49
Non esiste una cosa come Spring 2.1. C'è 2.0 e 2.5. Intendi 3.1? – skaffman
Stai usando Maven? –