Spring PropertyOverrideConfigurer没有覆盖PropertyPlaceholderConfigurer?

时间:2015-07-14 09:10:18

标签: java spring properties spring-4

我有一个Spring 4.0应用程序,其中我使用属性占位符来表示默认bean值,使用property-override来覆盖生产环境中的这些值。代码如下所示:

<context:property-placeholder location="classpath:config.properties" />
<context:property-override ignore-resource-not-found="true" ignore-unresolvable="true" location="file:${config.file}" />

因此,在生产环境中,您将在Tomcat启动时将参数-Dconfig.file = path /传递给/ config / file.properties以覆盖这些值。例如:

占位符文件:

dataSource.url=jdbc:sqlserver://10.46.1.1;database=TESTDB
dataSource.user=mvdb
dataSource.password=xxx

生产文件:

dataSource.url=jdbc:sqlserver://10.77.10.14:1433;database=DB
dataSource.user=mvdb
dataSource.password=xxx

并将bean定义为:

<bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource" destroy-method="close">
    <property name="driverClass" value="com.microsoft.sqlserver.jdbc.SQLServerDriver"/>
    <property name="jdbcUrl" value="${dataSource.url}"/>
    <property name="user" value="${dataSource.user}"/>
    <property name="password" value="${dataSource.password}"/>    
    (more properties omitted)
</bean>

但是,这些值不会被覆盖文件覆盖!我可以在启动时看到两个文件都被加载了:

[2015-07-14 10:37:57:057 CEST]  INFO  support.PropertySourcesPlaceholderConfigurer: Loading properties file from class path resource [config.properties]
[2015-07-14 10:37:58:058 CEST]  INFO  config.PropertyOverrideConfigurer: Loading properties file from URL [file:C:/var/opt/config/config.properties]

但它仍然使用占位符类路径文件中的值并尝试连接到测试数据库。

有什么想法吗?

0 个答案:

没有答案