私の Web アプリケーション (Spring + Tomcat) では、以下はapplicationContext.xml
. すべてのデータベース情報 ( username
、password
) は現在直接埋め込まれています。しかし、このアプリケーションでは、サーバーが新しいインスタンスをフォークし、JVM
この新しいJVM
インスタンスが同じデータベースと通信する必要があります。
<bean id="meetingDBSource" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close" p:initialSize="10" p:maxActive="50" p:minIdle="5" p:maxIdle="35" p:driverClassName="com.mysql.jdbc.Driver" p:url="jdbc:mysql://10.0.1.100/warehouse_mon?useLegacyDatetimeCode=false&useUnicode=true&serverTimezone=UTC&" p:username="user" p:password="pass" p:testOnBorrow="true" p:validationQuery="SELECT 1" />> <bean id="appDB" class="org.springframework.jdbc.core.JdbcTemplate"> <property name="dataSource"> <ref bean="meetingDBSource" /> </property> </bean>
そのため、起動時に必要な情報を引数として渡したいと考えています。では、このデータベース情報を取得するための堂々とした方法は何でしょうか?
最初にapplicationContext.xml
、マップを作成し、すべてのデータベース情報をマップに挿入しました。Spring の特殊式を使用して値を取得し、それをBasicDataSource
初期化に使用していました。私のコードでは、依存性注入を使用して、このマップへのアクセスを取得し、情報を取得しました。
しかし、それを行うためのより標準的な工場の方法が必要だと思います。(または、おそらく使用context-param
している場合、その方法は?)