我有一個JSF Web應用程序和Spring,我想弄清楚從applicationContext.xml引用JVM參數的方法。我使用環境參數(例如-Denv = development)啓動JVM。我已經找到並嘗試了幾種不同的方法,包括:如何閱讀Spring應用程序中的JVM參數applicationContext.xml
<bean id="myBean" class="com.foo.bar.myClass">
<property name="environment">
<value>${environment}</value>
</property>
</bean>
但是,當setter方法MyClass中被調用時,字符串「$ {}環境」傳遞的,而不是「發展」。我有一個適當的工作來使用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" />
我使用這種方法得到了相同的結果,因爲我在示例中使用了該方法。字符串「#{systemProperties.environment}」是傳遞給setter方法的東西。 – jinxed 2011-04-11 16:07:09
@jinxed:我認爲我發現了最後一個問題,那裏是拼寫錯誤。 - 看到我的擴展答案。 – Ralph 2011-04-12 06:53:45