我有一个使用Spring的JSF Web应用程序,我正在尝试找出一种从applicationContext.xml引用JVM参数的方法。我通过一个环境参数(例如-Denv = development)启动JVM。我找到并尝试了几种不同的方法,包括:
<bean id="myBean" class="com.foo.bar.myClass">
<property name="environment">
<value>${environment}</value>
</property>
</bean>
然而,在MyClass中调用setter方法时,传递的是字符串"${environment}",而不是"development"。我已经采取了一个解决方法,使用System.getProperty()来实现,但如果能够通过Spring来设置这些值会更好、更简洁。有什么办法可以做到这一点吗?
编辑: 在此之前,我应该提到的是,我正在使用JDBC连接从数据库加载属性。这似乎增加了复杂性,因为当我在配置文件中添加属性占位符时,从数据库加载的属性会被属性占位符覆盖。我不确定这是否与顺序有关。就像我可以做其中之一,但不能同时做两件事。
编辑: 我目前正在使用以下配置加载属性:
<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" />