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

所属分类: 软件编程 / java 阅读数: 40
收藏 0 赞 0 分享

本文实例讲述了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 id="dataSource" 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 id="ds1" 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 id="ds2" 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程序设计有所帮助。

更多精彩内容其他人还在看

Java Set简介_动力节点Java学院整理

Set最大的特性就是不允许在其中存放的元素是重复的。接下来通过本文给大家分享java set常用方法和原理分析,需要的的朋友参考下吧
收藏 0 赞 0 分享

Java Timezone类常见问题_动力节点Java学院整理

这篇文章主要介绍了Java Timezone类常见问题的相关资料,需要的朋友可以参考下
收藏 0 赞 0 分享

javaWeb项目部署到阿里云服务器步骤详解

本篇文章主要介绍了javaWeb项目部署到阿里云服务器步骤详解,非常具有实用价值,需要的朋友可以参考下
收藏 0 赞 0 分享

详解使用zxing库生成QR-Code二维码

这篇文章主要介绍了详解使用zxing库生成QR-Code二维码的相关资料,需要的朋友可以参考下
收藏 0 赞 0 分享

java实现对服务器的自动巡检邮件通知

这篇文章主要为大家详细介绍了java实现对服务器的自动巡检邮件通知,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
收藏 0 赞 0 分享

java随机验证码生成实现实例代码

这篇文章主要介绍了java随机验证码生成实现实例代码的相关资料,需要的朋友可以参考下
收藏 0 赞 0 分享

java读取txt文件代码片段

这篇文章主要为大家详细介绍了java读取txt文件的代码片段,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
收藏 0 赞 0 分享

java连接mysql数据库的方法

这篇文章主要为大家详细介绍了java连接mysql数据库的方法,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
收藏 0 赞 0 分享

java 算法之快速排序实现代码

这篇文章主要介绍了java 算法之快速排序实现代码的相关资料,需要的朋友可以参考下
收藏 0 赞 0 分享

详解Spring缓存注解@Cacheable,@CachePut , @CacheEvict使用

这篇文章主要介绍了详解Spring缓存注解@Cacheable,@CachePut , @CacheEvict使用,非常具有实用价值,需要的朋友可以参考下
收藏 0 赞 0 分享
查看更多