在Spring应用程序上下文中读取环境变量

时间:2012-11-02 11:56:33

标签: spring

我有三个环境变量。 MY_TOPIC MY_CONTEXT_FACTORY MY_LDAP

第一个 - 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> 

最后两个从环境变量中读取不起作用。它是如何使这项工作的?

<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>

1 个答案:

答案 0 :(得分:0)

如果您使用的是Spring 3+,则可以使用Spring Expression Language。

使用#{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系统属性。