プロパティファイルで変数属性に言及し、local.properties、production.propertiedなどの環境固有のプロパティファイルを定義できます。
これで、環境に基づいて、これらのプロパティファイルの1つを、ServletContextListenerのように、起動時に呼び出されるリスナーの1つで読み取ることができます。
プロパティファイルには、さまざまなキーの環境固有の値が含まれます。
「local.propeties」のサンプル
db.logsDataSource.url=jdbc:mysql://localhost:3306/logs
db.logsDataSource.username=root
db.logsDataSource.password=root
db.dataSource.url=jdbc:mysql://localhost:3306/main
db.dataSource.username=root
db.dataSource.password=root
「production.properties」のサンプル
db.logsDataSource.url=jdbc:mariadb://111.111.111.111:3306/logs
db.logsDataSource.username=admin
db.logsDataSource.password=xyzqer
db.dataSource.url=jdbc:mysql://111.111.111.111:3306/carsinfo
db.dataSource.username=admin
db.dataSource.password=safasf@mn
これらのプロパティファイルを使用するには、以下のようにREsourceを利用できます。
PropertyPlaceholderConfigurer configurer = new PropertyPlaceholderConfigurer();
ResourceLoader resourceLoader = new DefaultResourceLoader();
Resource resource = resourceLoader.getResource("classpath:"+System.getenv("SERVER_TYPE")+"DB.properties");
configurer.setLocation(resource);
configurer.postProcessBeanFactory(beanFactory);
SERVER_TYPEは、ローカル環境と本番環境に適切な値を持つ環境変数として定義できます。
これらの変更により、appplicationContext.xmlは次のように変更されます
<bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource">
<property name="driverClassName" value="com.mysql.jdbc.Driver" />
<property name="url" value="${db.dataSource.url}" />
<property name="username" value="${db.dataSource.username}" />
<property name="password" value="${db.dataSource.password}" />
お役に立てれば 。