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,多数据源配置
![](/images/zang.png)
![](/images/jiucuo.png)
猜你喜欢
C语言字符串函数入门
2021-07-22 17:10:15
Java利用移位运算将int型分解成四个byte型的方法
2023-11-09 08:25:00
![](https://img.aspxhome.com/file/2023/4/59334_0s.png)
Linux下java环境配置图文方法
2021-10-24 06:22:52
![](https://img.aspxhome.com/file/2023/0/70300_0s.png)
浅析java 10中的var关键字用法
2021-12-23 15:18:17
聊聊@RequestBody和Json之间的关系
2023-11-27 03:31:45
Android实现圆形渐变加载进度条
2021-07-17 18:38:06
![](https://img.aspxhome.com/file/2023/8/137818_0s.jpg)
详解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
![](https://img.aspxhome.com/file/2023/0/86780_0s.png)
springboot多环境配置文件及自定义配置文件路径详解
2021-09-30 03:55:54
![](https://img.aspxhome.com/file/2023/4/60844_0s.png)
Spring RestTemplate的使用与踩坑
2022-01-12 21:43:14
Android图表库HelloChart绘制多折线图
2021-06-18 05:34:45
![](https://img.aspxhome.com/file/2023/8/122238_0s.jpg)
C#实现对数组进行随机排序类实例
2023-06-22 19:04:26
IDEA中已配置阿里镜像但maven无法下载jar包的问题及解决方法
2021-11-09 11:06:53
![](https://img.aspxhome.com/file/2023/9/64499_0s.jpg)
java使用Abobe Acrobat DC生成模板
2022-04-14 21:03:12
![](https://img.aspxhome.com/file/2023/9/81359_0s.png)
springboot常用注释的讲解
2023-11-03 02:53:15
c# 实现控件(ocx)中的事件详解
2022-12-29 04:20:50
![](https://img.aspxhome.com/file/2023/5/88305_0s.jpg)
浅谈java多线程wait,notify
2023-11-29 16:29:03