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

 更新时间:2019年12月19日 11:53:30   作者:自由港  
这篇文章主要介绍了spring多数据源配置实现方法,结合实例形式分析了spring多数据源配置相关操作技巧与使用注意事项,需要的朋友可以参考下

本文实例讲述了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方法在调用在内存中的执行过程

    简单解析java方法在调用在内存中的执行过程

    这篇文章主要介绍了简单解析java方法在调用在内存中的执行过程,文章围绕主题展开详细的内容介绍,具有一定的参考价值,需要的小伙伴可以参考一下
    2022-07-07
  • Java ServletContext与ServletConfig接口使用教程

    Java ServletContext与ServletConfig接口使用教程

    ServletConfig对象,叫Servlet配置对象。主要用于加载配置文件的初始化参数。我们知道一个Web应用里面可以有多个servlet,如果现在有一份数据需要传给所有的servlet使用,那么我们就可以使用ServletContext对象了
    2022-09-09
  • Spring加载配置和读取多个Properties文件的讲解

    Spring加载配置和读取多个Properties文件的讲解

    今天小编就为大家分享一篇关于Spring加载配置和读取多个Properties文件的讲解,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧
    2019-03-03
  • java事务回滚失败问题分析

    java事务回滚失败问题分析

    这篇文章主要介绍了java事务回滚失败问题分析,具有一定借鉴价值,需要的朋友可以参考下
    2018-01-01
  • Struts之logic标签库详解

    Struts之logic标签库详解

    本文就Struts之logic标签库进行详细介绍,需要的朋友可以参考下
    2012-11-11
  • Java8实现Stream流的合并的方法展示

    Java8实现Stream流的合并的方法展示

    本文介绍了Java8中Stream流的合并方法,包括concat()、flatMap()和reduce()三种方法。其中,concat()方法可以将两个Stream流合并成一个,flatMap()方法可以将一个Stream流中的元素映射成多个Stream流并合并成一个,reduce()方法可以将Stream流中的元素逐个合并成一个结果
    2023-05-05
  • 浅谈spring boot使用thymeleaf版本的问题

    浅谈spring boot使用thymeleaf版本的问题

    这篇文章主要介绍了spring boot使用thymeleaf版本的问题,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2021-08-08
  • Java调用Shell命令的方法

    Java调用Shell命令的方法

    这篇文章主要介绍了Java调用Shell命令的方法,实例分析了java调用shell命令的相关技巧,具有一定参考借鉴价值,需要的朋友可以参考下
    2015-07-07
  • 详解Java快速上手用户后台管理系统

    详解Java快速上手用户后台管理系统

    只有在实战中练习才能真正获得能力的提升,本篇文章手把手带你用Java快速上手实现一个用户后台管理系统,大家可以在过程中查缺补漏,提升水平
    2022-01-01
  • java实现银行家算法(Swing界面)

    java实现银行家算法(Swing界面)

    这篇文章主要为大家详细介绍了银行家算法的java代码实现,Swing写的界面,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2019-12-12

最新评论