我开发了一个将在AWS BeanStalk上运行的休息WS。
目前,数据源配置了属性文件:
database.driverClass=org.postgresql.Driver
database.jdbcUrl=jdbc:postgresql://localhost:5432/public
database.username=postgres
database.password=postgres
在context.xml中:
<bean id="dataSource" class="com.jolbox.bonecp.BoneCPDataSource" destroy-method="close">
<property name="driverClass" value="${database.driverClass}" />
<property name="jdbcUrl" value="${database.jdbcUrl}"/>
....
但现在,我需要使用AWS Beanstalk进行preprod环境,以暴露我的系统属性,如RDS_HOSTNAME,RDS_PORT,RDS_DB_NAME ......
有没有办法保持相同的系统,比如写
database.jdbcUrl=jdbc:postgresql://#{RDS_HOSTNAME}:#{RDS_PORT}/#{RDS_DB_NAME}
在preprod.property?
或者在context.xml中用system属性重置database.jdbcUrl?
答案 0 :(得分:4)
你可以做到
<context:property-placeholder ignore-unresolvable="true" ignore-resource-not-found="true" location="classpath:database.properties, file:preProd.properties" />
preProd.properties将在preprod机器上。键将是相同的,但值将是不同的。这样,如果找不到preProd.properties(例如在dev机器上),将使用database.properties。如果文件preProd.properties存在,它将覆盖database.properties中的值。
如果你正在使用maven,你也可以使用maven profile和maven-replacer-plugin。