当前位置 主页 > 网站技术 > 代码类 >

    spring多数据源配置实现方法实例分析

    栏目:代码类 时间:2019-12-19 15:07

    本文实例讲述了spring多数据源配置实现方法。分享给大家供大家参考,具体如下:

    在网上找到的配置多数据源的方法。

    1.扩展 org.springframework.jdbc.datasource.lookup.AbstractRoutingDataSource

    实现代码

    import org.springframework.jdbc.datasource.lookup.AbstractRoutingDataSource;
    public class DynamicDataSource extends AbstractRoutingDataSource {
      @Override
      protected Object determineCurrentLookupKey() {
        // TODO Auto-generated method stub
        return DbContextHolder.getDbType();
      }
    }
    
    

    2.实现一个线程安全的DbContextHolder类。

    public class DbContextHolder {
        private static final ThreadLocal contextHolder = new ThreadLocal();
        public static void setDbType(String dbType)
        {
          contextHolder.set(dbType);
        }
        /**
         * 取得dbtype类型
         * @return
         */
        public static String getDbType()
        {
          String str=(String) contextHolder.get();
          if(null==str || "".equals(str))
            str="1";
          return str;
        }
        public static void clearDbType()
        {
          contextHolder.remove();
        }
    }
    
    

    3.修改spring的配置文件。

    <!--动态选择数据源-->
      <bean  class="tecamo.core.utils.DynamicDataSource">
        <property name="targetDataSources">
          <map key-type="java.lang.String">
            <entry key="1" value-ref="ds1"/>
            <entry key="2" value-ref="ds2"/>
          </map>
        </property>
        <property name="defaultTargetDataSource" ref="ds1"/>
      </bean>
      <!-- 数据源定义 -->
      <bean  class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close">
        <property name="driverClassName" value="${jdbc.driverClassName}"/>
        <property name="url" value="${jdbc.url}"/>
        <property name="username" value="${jdbc.username}"/>
        <property name="password" value="${jdbc.password}"/>
      </bean>
      <bean  class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close">
        <property name="driverClassName" value="${jdbcOrcale.driverClassName}"/>
        <property name="url" value="${jdbcOrcale.url}"/>
        <property name="username" value="${jdbcOrcale.username}"/>
        <property name="password" value="${jdbcOrcale.password}"/>
      </bean>
    
    

    4.切换数据源方法。

    在serverice方法之前调用

    DbContextHolder.setDbType("2");表示使用第二个数据源。

    更多关于java相关内容感兴趣的读者可查看本站专题:《Spring框架入门与进阶教程》、《Java数据结构与算法教程》、《Java操作DOM节点技巧总结》、《Java文件与目录操作技巧汇总》和《Java缓存操作技巧汇总》

    希望本文所述对大家java程序设计有所帮助。