すべての環境で、構成データはターゲット マシン上にプロパティ ファイルの形式で存在します。SpringFramework のPropertyPlaceholderconfigurerを使用してこれらのプロパティをアプリにバインドし、環境間での移植性を維持します。
たとえば、アプリが実行されるマシンに /etc/myapp/database.properties が存在することがわかっている限り、私の春の構成では、次のようなものが必要です。
<bean id="myPropertyConfigurer"
class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
<property name="locations">
<list>
<value>/etc/myapp/database.properties</value>
</list>
</property>
</bean>
<bean id="myDataSource" class="org.apache.commons.dbcp.BasicDataSource">
<property name="driverClassName" value="com.mysql.jdbc.Driver" />
<property name="url"
value="jdbc:mysql://${db.host}:3306/${db.name}" />
<property name="username" value="${db.user}" />
<property name="password" value="${db.pass}" />
</bean>
そのSpringクラスには、プロパティファイルが存在できる場所に関する多くのオプションがあります。それらを置換して、環境変数として渡すこともできます。
<bean id="myPropertyConfigurer"
class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
<property name="searchSystemEnvironment" value="true" />
<property name="systemPropertiesModeName" value="SYSTEM_PROPERTIES_MODE_OVERRIDE" />
<property name="locations">
<list>
<value>${database.configuration.file.url}</value>
</list>
</property>
</bean>
そして bash_profile (または何でも): export JAVA_OPTS="-Ddatabase.configuration.file.url=file:///etc/myapp/database.properties"
または、実行している内容に応じて、「java」を呼び出すときに同じ -D オプションを渡します。
FWIW、私たちはプロパティ ファイルを RPM として個別に管理しています。