PropertyPlaceholderConfigurer
es la respuesta , sin embargo, me imagino que le gustaría que esto suceda sin la necesidad de seguir actualizando su archivo de propiedades para cada entorno.Por lo tanto,
Mi sugerencia sería la siguiente
- Uso
PropertyPlaceholderConfigurer
, pero no se crea un archivo de propiedades
- Por defecto,
PropertyPlaceholderConfigurer
primeros intentos para encontrar un valor en un archivo de propiedades, pero si eso no funciona, buscará una en las propiedades del sistema
Así que todo lo que necesita hacer es definir los dos granos de la misma forma en que lo está haciendo, es decir dev
y stag
.. que es un buen enfoque ya que muestra claramente las diferentes configuraciones ... ayudaría si también agregó un alias para mostrar claramente la configuración que desea usar.
A continuación, pase una propiedad del sistema que defina en qué modo se encuentra ... e idealmente configure explícitamente PropertyPlaceholderConfigurer
para usar las propiedades del sistema.
Así que .. su configuración se vería algo como esto
<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>
A continuación puede pasar en la propiedad durante el inicio de la siguiente manera
-D<property-name>=<value>
lo tanto, en este caso tendrá que utilizar
-Dlaunch.mode=dev_mode
O
-Dlaunch.mode=staging_mode
Y no necesitará tocar ninguno de los archivos de configuración.
Sólo una nota más adelante systemPropertiesMode
, valores aceptados son los siguientes:
- 0 - nunca mirar en las propiedades del sistema
- 1 - propiedades del sistema uso como punto de retorno (es decir, si no se encuentra en los archivos de propiedades)
- 2 - propiedades del sistema siempre anulan (el modo que estoy sugiriendo)
espero que ayude :)
Nota: Esta recomendación solo se aplica al resorte < 3.1, ya que de 3.1 en adelante, el enfoque recomendado es usar @Profile
No existe el resorte 2.1. Hay 2.0 y 2.5. ¿Te refieres a 3.1? – skaffman
¿Estás usando Maven? –