1

我正在尝试从环境变量加载属性文件,所以这是我尝试的:

<bean id="propertyPlaceholderConfigurer"
        class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
        <property name="locations">
            <list>

                <value>classpath:messages/application.properties</value>
                <value>file:${My_ENV_VAR}/*.properties</value>

            </list>
        </property>

        <property name="ignoreResourceNotFound" value="true" />
        <property name="searchSystemEnvironment" value="true" />
        <property name="systemPropertiesModeName" value="SYSTEM_PROPERTIES_MODE_OVERRIDE" />

    </bean>

我有一个名为的新环境变量My_ENV_VAR=C:\Program Files\My Folder\props.properties ,但是在停止和启动应用程序时,变量的值没有设置,有什么想法吗?

更新:要求

我想从文件系统上的外部属性文件中读取applicationContext.xml中的休眠属性(url、用户名、密码) ,其路径存储在环境变量中。

4

2 回答 2

8

您正在尝试使用PropertyPlaceholderConfigurer来创建PropertyPlaceholderConfigurer. 那是鸡/蛋的问题,它行不通!

尝试使用表达式语言(请参阅本节以供参考),但在您的情况下,这很棘手,因为您想混合静态和动态内容。可能这样的事情会起作用:

<property name="locations"
  value="classpath:messages/application.properties,
  #{ T(java.lang.System).getenv('MY_ENV_VAR')}" />
  <!-- changed method name, it's getenv(), not getEnv() -->
于 2012-01-18T14:41:01.463 回答
1

哟应该使用这种方式:

先声明spring bean

<bean class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
    <property name="locations">
        <list>             
            <value>classpath:config.properties</value>
        </list>
    </property>
</bean>

现在在WEB-INF/classes目录中创建文件config.properties并将其放入:

jboss.variable=${jboss.modules.dir}

注意:当我部署 JBoss 6 EAP 时,日志显示:

jboss.modules.dir = C:\Java\jee-container\jboss-eap-6.1\modules

并在应用程序上下文文件中使用变量:

<bean id="nameOfBean"
    class="com.moeandjava.pusku.MySpringBean">
    <property name="path" value="${jboss.variable}" />
</bean>

对不起,我的英语不好

于 2013-08-19T20:19:14.723 回答