我有一个带有 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" />