2012-11-02 122 views
0

我有三個環境變量。 MY_TOPIC MY_CONTEXT_FACTORY MY_LDAP在Spring應用程序環境中讀取環境變量

第一個 - MY_TOPIC工作原理是這樣

<bean id="myPublishTopic" class="org.springframework.jndi.JndiObjectFactoryBean"> 
     <property name="jndiTemplate"> 
      <ref bean="jndiTemplate"/> 
     </property> 
     <property name="jndiName"> 
      <value>fxClientDestinationUID=${MY_TOPIC}</value> 
     </property> 
    </bean> 

最後兩位無效從enviornment讀取變量。它如何使這項工作?

<bean id="jndiTemplate" class="org.springframework.jndi.JndiTemplate"> 
     <property name="environment"> 
     <props> 
      <prop key="java.naming.factory.initial">${MY_CONTEXT_FACTORY}</prop> 
      <prop key="java.naming.provider.url">${MY_LDAP}</prop> 
     </props> 
     </property> 
    </bean> 

最後兩個作品只有當我從屬性文件,我想要避免讀取它。

<bean class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer"> 
     <property name="location"><value>/WEB-INF/classes/springConfig-devel.properties</value></property> 
    </bean> 

回答

0

如果您使用Spring 3 +,則可以使用Spring表達式語言。

使用#{systemEnvironment['NAME']}訪問環境變量

<bean id="jndiTemplate" class="org.springframework.jndi.JndiTemplate"> 
     <property name="environment"> 
      <props> 
       <prop key="java.naming.factory.initial">#{systemEnvironment['MY_CONTEXT_FACTORY']}</prop> 
       <prop key="java.naming.provider.url">#{systemEnvironment['MY_LDAP']}</prop> 
     </props> 
    </property> 
</bean> 

使用#{systemProperties['value']}爲Java系統屬性。

+0

我正在使用Spring 2.5.6任何解決方案? – Jay

+0

我想你需要使用一個'PropertyPlaceholderConfigurer',其中'searchSystemEnvironment'設置爲'true'。我會建議升級到更新版本的Spring(如果可能)。 –