SpirngMVCでdataSourceを複数使いたい場合

コンテキストファイルを下記のように

<Resource name="jdbc/mysql" auth="Container" 
  type="javax.sql.DataSource" maxActive="10" 
  maxIdle="5" maxWait="-1" initialSize="5"
  validationQuery="SELECT 1" testOnBorrow="true" 
  testWhileIdle="true" username="hoge"
  password="hoge" driverClassName="com.mysql.jdbc.Driver"
  url="jdbc:mysql://localhost:3306/dbname?characterEncoding=utf8"/> 
<Resource name="jdbc/mysqlXXX" auth="Container" 
  type="javax.sql.DataSource" maxActive="10" 
  maxIdle="5" maxWait="-1" initialSize="5" 
  validationQuery="SELECT 1" testOnBorrow="true" 
  testWhileIdle="true" username="fuga" 
  password="fuga" driverClassName="com.mysql.jdbc.Driver"
  url="jdbc:mysql://localhost:3306/dbname2?characterEncoding=utf8"/>

applicationContext.xmlを以下のように記載

<bean id="dataSource" class="org.springframework.jndi.JndiObjectFactoryBean"> 
  <property name="jndiName"> 
    <value>java:/comp/env/jdbc/mysql</value> 
  </property> 
</bean> 
<bean id="dataSourceLogin" class="org.springframework.jndi.JndiObjectFactoryBean"> 
  <property name="jndiName"> 
    <value>java:/comp/env/jdbc/mysqlXXX</value> 
  </property> 
</bean>

今回利用したパタンは

mysql     ORマッパーを使用

mysqlXXX ORマッパーを未使用

mysqlXXXを使用したい場合、下記でDIできる。

import javax.sql.DataSource;
import org.springframework.beans.factory.annotation.Autowired; 
import org.springframework.beans.factory.annotation.Qualifier; 

@Qualifier("dataSourceXXX") 
@Autowired DataSource dataSourceXXX;

タイトルとURLをコピーしました