我想将我的 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 中,我尝试从与系统属性相同的位置访问相同的属性文件,但应用程序无法正常工作
相关分类