在 spring applicationContext.xml 中访问系统属性时出错

我想将我的 db 文件位置设置为系统变量的一部分,该变量应在启动应用程序时提供。我要访问此系统属性中applicationContext.xml的,我曾尝试使用#{systemProperties['db.properties']}在applicationContext.xml.


我用以下两种方式定义了 propertyPlaceholderConfigurer bean,以两种不同的方式指定属性“位置”的值:


情况1 #:

<bean id="propertyPlaceholderConfigurer"

        class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">

        <property name="systemPropertiesModeName" value="SYSTEM_PROPERTIES_MODE_OVERRIDE" />

        <property name="searchSystemEnvironment" value="true"/>

        <property name="locations">


             <value>file://"#{systemProperties['db.properties']}"</value>

        </property>

        <property name="ignoreResourceNotFound" value="true" />

         <property name="ignoreUnresolvablePlaceholders" value="true"/>

</bean>

数据源 bean #:

<bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource" 

        destroy-method="close"> 

     <property name="driverClassName" value="org.postgresql.Driver"/> 

     <property name="url" value="${db.url}"/>

     <property name="username" value="${db.user}"/>

     <property name="password" value="${db.pwd}"/>

</bean> 

案例 2 #:

<bean id="propertyPlaceholderConfigurer"

        class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">

        <property name="systemPropertiesModeName" value="SYSTEM_PROPERTIES_MODE_OVERRIDE" />

        <property name="searchSystemEnvironment" value="true"/>

        <property name="locations">


            <value>file://${DB_CONF}/test/db.properties</value>

        </property>

        <property name="ignoreResourceNotFound" value="true" />

         <property name="ignoreUnresolvablePlaceholders" value="true"/>

</bean>

如果我使用情况 2 中的属性位置值而不是“#{systemProperties['db.properties']}”,则应用程序工作正常。在情况 1 中,我尝试从与系统属性相同的位置访问相同的属性文件,但应用程序无法正常工作


阿波罗的战车
浏览 258回答 2
2回答
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java