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

作者:自由港 时间:2023-06-06 22:15:56 

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

来源:https://www.cnblogs.com/yg_zhang/archive/2010/12/08/1900471.html

标签:spring,多数据源配置
0
投稿

猜你喜欢

  • C语言字符串函数入门

    2021-07-22 17:10:15
  • Java利用移位运算将int型分解成四个byte型的方法

    2023-11-09 08:25:00
  • Linux下java环境配置图文方法

    2021-10-24 06:22:52
  • 浅析java 10中的var关键字用法

    2021-12-23 15:18:17
  • 聊聊@RequestBody和Json之间的关系

    2023-11-27 03:31:45
  • Android实现圆形渐变加载进度条

    2021-07-17 18:38:06
  • 详解Kotlin中的面向对象(二)

    2021-12-29 03:10:00
  • hibernate 中 fetch=FetchType.LAZY 懒加载失败处理方法

    2023-11-08 09:40:31
  • Android基于ListView实现类似Market分页加载效果示例

    2021-10-01 10:44:32
  • C# Partial:分部方法和分部类代码实例

    2022-04-07 11:28:26
  • SpringBoot整合Redis将对象写入redis的实现

    2023-07-30 14:39:07
  • springboot多环境配置文件及自定义配置文件路径详解

    2021-09-30 03:55:54
  • Spring RestTemplate的使用与踩坑

    2022-01-12 21:43:14
  • Android图表库HelloChart绘制多折线图

    2021-06-18 05:34:45
  • C#实现对数组进行随机排序类实例

    2023-06-22 19:04:26
  • IDEA中已配置阿里镜像但maven无法下载jar包的问题及解决方法

    2021-11-09 11:06:53
  • java使用Abobe Acrobat DC生成模板

    2022-04-14 21:03:12
  • springboot常用注释的讲解

    2023-11-03 02:53:15
  • c# 实现控件(ocx)中的事件详解

    2022-12-29 04:20:50
  • 浅谈java多线程wait,notify

    2023-11-29 16:29:03
  • asp之家 软件编程 m.aspxhome.com