如何利用spring动态切换数据源?

为了解决这一问题,可以利用Spring提供的抽象类:AbstractRoutingDataSource.

1. 定义一个实现类(如:DynamicDataSource)实现它,并重写Object determineCurrentLookupKey()方法

protected Object determineCurrentLookupKey(){

return DataSourceHolder.getDataSourceType();

}


public class DataSourceHodler{

privatge final static ThreadLocal<Long> contextHolder = new ThreadLocal<Long>();

public static void setDataSourceType(Long dsType){

contextHolder.set(dsType);

}

public static Long getDataSourceType(){

return contextHolder.get();

}

public static void remove(){

contextHolder.remove();

}

}

2. 把实现类配置在spring的配置文件中,并注入两个属性:targetDataSrouces、defaultTargetDataSource.

<bean id="subDatasource1" class="org.springframework.jndi.JndiObjectFactoryBean">

<property name="jndiName" value="java:comp/env/jdbc/sub_db"></property>

</bean>


targetDataSrouces赋值为:

<util:map id="dynDataSourceMap" key-value="java.lang.Long">

<entry key="1" value-ref="subDataSource1"></entry>

....

</util:map>


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值