0

我有三个环境变量。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>
4

1 回答 1

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 系统属性。

于 2012-11-02T12:23:06.577 回答