我们正在使用Spring 4.3.9和Spring Batch 3.我们正在使用maven来复制带有过滤的资源,以便在构建时将基于配置文件的属性合并到配置中。我想允许我的DevOps工程师在部署时将属性文件设置(数据库密码)覆盖到特定于环境的属性,因此我设置了如下所示的内容,但覆盖不起作用:
<bean class="org.springframework.beans.factory.config.PropertyOverrideConfigurer">
<property name="location" value="classpath:bluecost-OVERRIDE.properties" />
</bean>
<bean id="dataSource"
class="com.mchange.v2.c3p0.ComboPooledDataSource" destroy-method="close">
<property name="driverClass" value="${datasource.database.driverClassName}" />
<property name="jdbcUrl" value="${datasource.database.url}" />
<property name="user" value="${datasource.database.username}" />
<property name="password" value="${datasource.database.password}" />
<property name="maxPoolSize" value="${datasource.maxPoolSize}" />
<property name="minPoolSize" value="${datasource.minPoolSize}" />
</bean>
maven与所有默认值合并的属性文件如下所示:
datasource.database.driverClassName=com.ibm.db2.jcc.DB2Driver
datasource.database.url=jdbc:db2://localhost:50000/bluecost
datasource.database.username=not-real-id
datasource.database.password=not-real-pwd
datasource.maxPoolSize=50
datasource.minPoolSize=10
最后,我的bluecost-OVERRIDE.properties文件只有用户名和密码的正确值,配置如下:
# Overriding values for the datasource property values
datasource.database.username=db2inst
datasource.database.password=db2inst1
覆盖文件肯定在类路径中(无论如何都不会启动它)。由于无效(默认)userid / pwd,它在运行时抛出错误。
为什么不像我想要的那样覆盖userid / pwd?