Tengo una aplicación web JSF con Spring y estoy tratando de encontrar una manera de hacer referencia a los argumentos de JVM desde applicationContext.xml. Estoy comenzando la JVM con un argumento de entorno (-Denv = desarrollo, por ejemplo). He descubierto y tratado algunos enfoques diferentes, incluyendo:Cómo leo los argumentos de JVM en Spring applicationContext.xml
<bean id="myBean" class="com.foo.bar.myClass">
<property name="environment">
<value>${environment}</value>
</property>
</bean>
Pero, cuando el método de selección es invocada en MiClase, la cadena "$ {entorno}" se pasa, en lugar de "desarrollo". Tengo un trabajo inmejorable para usar System.getProperty(), pero sería mejor y más limpio poder establecer estos valores a través de Spring. ¿Hay alguna manera de hacer esto?
Edit: Lo que debería haber mencionado antes es que estoy cargando propiedades de mi base de datos usando una conexión JDBC. Esto parece agregar complejidad, porque cuando agrego un marcador de posición de propiedad a mi configuración, las propiedades cargadas de la base de datos son anuladas por el marcador de posición de propiedad. No estoy seguro de si depende del pedido o algo así. Es como si pudiera hacer uno u otro, pero no ambos.
Editar: Actualmente estoy cargando las propiedades utilizando la siguiente configuración:
<bean id="myDataSource" class="org.springframework.jndi.JndiObjectFactoryBean">
<property name="jndiName" value="jdbc.mydb.myschema"/>
</bean>
<bean id="props" class="com.foo.bar.JdbcPropertiesFactoryBean">
<property name="jdbcTemplate">
<bean class="org.springframework.jdbc.core.JdbcTemplate">
<constructor-arg ref="myDataSource" />
</bean>
</property>
</bean>
<context:property-placeholder properties-ref="props" />
Obtengo el mismo resultado utilizando este enfoque que con el método de mi ejemplo. La cadena, "# {systemProperties.environment}" es lo que pasa al método setter. – jinxed
@jinxed: Creo que he encontrado el último problema, hubo un error ortográfico. - mira mi respuesta extendida. – Ralph