Я разрабатываю WS для отдыха, который будет работать на AWS BeanStalk.
На данный момент источник данных настроен с файлами свойств:
database.driverClass=org.postgresql.Driver
database.jdbcUrl=jdbc:postgresql://localhost:5432/public
database.username=postgres
database.password=postgres
И в контексте.xml:
<bean id="dataSource" class="com.jolbox.bonecp.BoneCPDataSource" destroy-method="close">
<property name="driverClass" value="${database.driverClass}" />
<property name="jdbcUrl" value="${database.jdbcUrl}"/>
....
Но теперь мне нужно иметь preprod environmentnement, используя AWS Beanstalk, которые отображают мои системные свойства, такие как RDS_HOSTNAME, RDS_PORT, RDS_DB_NAME,...
Есть ли способ сохранить ту же систему, как писать
database.jdbcUrl=jdbc:postgresql://#{RDS_HOSTNAME}:#{RDS_PORT}/#{RDS_DB_NAME}
В preprod.property?
Или сбросить database.jdbcUrl с системным свойством в context.xml?
Вы могли бы сделать
<context:property-placeholder ignore-unresolvable="true" ignore-resource-not-found="true" location="classpath:database.properties, file:preProd.properties" />
И preProd.properties будет на машине preprod. Клавиши будут одинаковыми, но значения будут разными. Таким образом, если preProd.properties не найден (например, на dev-машине), будут использоваться базы данных.properties. Если присутствует файл preProd.properties, он переопределяет значения из database.properties.
Если вы используете maven, вы также можете использовать maven-профиль и maven-replacer-plugin.