如何在webservice中配置多数据源
来源:互联网 发布:男士私处清洁 知乎 编辑:程序博客网 时间:2024/06/06 18:14
webService多数据源配置:
1.编写一个工具类获取数据源编号key
public class DateSourceKey {
//这里用的是ThreadLocal<String>的key是为了避免多并发时多个用户对同一个 key修改会发生冲突,所以此处用了线程本地化的技术来解决多并发问题
private static ThreadLocal<String>thread_local_key =new ThreadLocal<>();
public static String getKey() {
return thread_local_key.get();
}
public static void setKey(Stringkey) {
thread_local_key.set(key);
}
public static void clear_key() {
thread_local_key.remove();
}
}
2.编写一个自定义的数据源路由器类来自由切换要访问的数据源例如类名:MyWsRoutingDataSource但是要继承AbstractRoutingDataSource抽象类才会有自由切换数据源的功能,示例代码如下:
import org.springframework.jdbc.datasource.lookup.AbstractRoutingDataSource;
public class MyWsRoutingDataSourceextends AbstractRoutingDataSource {
@Override
protected Object determineCurrentLookupKey() {
return DateSourceKey.getKey();
}
}
3.在接口的实现类中设置数据源的key值:
package com.service;
import org.springframework.beans.factory.annotation.Autowired;
import com.bean.T_MALL_USER_ACCOUNT;
import com.mapper.UserMapper;
import com.util.DateSourceKey;
public class UserServiceImpl implements UserService {
@Autowired
UserMapper userMapper;
@Override
public T_MALL_USER_ACCOUNT login(T_MALL_USER_ACCOUNT user) {
DateSourceKey.setKey("2");//注意一定要在与数据库交互的业务代码前去设置key
T_MALL_USER_ACCOUNT login = userMapper.select_login(user);
System.out.println("用户信息:"+login);
return login;
}
}
4.key到底是什么呢?在spring配置文件中配置多个数据源和自定义的数据源路由器
示例代码如下:
<!-- 此处可以配置多个数据源文件也可以在同一个数据源文件中配置多个属性 -->
<context:property-placeholder location="classpath:dbConfig.properties,
classpath:dbConfig2.properties" />
<!-- 数据源1 -->
<bean id="dataSource1" class="org.apache.commons.dbcp.BasicDataSource">
<property name="driverClassName" value="${driverClassName}" />
<property name="url" value="${url1}" />
<property name="username" value="${jdbc.username}" />
<property name="password" value="${jdbc.password}" />
</bean>
<!-- 数据源2 -->
<bean id="dataSource2" class="org.apache.commons.dbcp.BasicDataSource">
<property name="driverClassName" value="${driverClassName}" />
<property name="url" value="${url2}" />
<property name="username" value="${jdbc.username}" />
<property name="password" value="${jdbc.password}" />
</bean>
<!-- 数据源路由器,注意一定要配置默认的数据源避免连接不到数据源且属性名一定写defaultTargetDataSource -->
<bean id="dataSource" class="com.util.MyWsRoutingDataSource">
<property name="targetDataSources">
<map key-type="java.lang.String">
<entry key="1" value-ref="dataSource1"/>
<entry key="2" value-ref="dataSource2"/>
</map>
</property>
<property name="defaultTargetDataSource" ref="dataSource2"/>
</bean>
- 如何在webservice中配置多数据源
- 在Spring下配置多数据源
- SpringSide3中多数据源配置
- spring 中多数据源的配置
- spring中多数据源配置
- 如何在一个Spring工程下使用多数据源配置的改进实现
- 如何在spring中配置使得mybatis3.1.1中支持vendor方式的multi-db(多数据库)
- 在spring中配置多数据库读取
- 在spring中配置多数据库读取
- 多数据源配置
- 基于注解的形式在Spring中实现对多数据源配置和使用
- 如何在spring框架中解决多数据源的问题
- 关键字: 设计模式 [Spring]如何在spring框架中解决多数据源的问题
- [Spring]如何在spring框架中解决多数据源的问题
- 如何在spring框架中解决多数据源的问题
- 如何在spring框架中解决多数据源的问题
- 如何在spring框架中解决多数据源的问题
- 如何在spring框架中解决多数据源的问题【转载】
- PyQt5介绍
- 如何在其他项目调用webservice 发布的soap风格的接口
- webService的soap风格的接口的安全问题
- 前言
- android面试题
- 如何在webservice中配置多数据源
- Say less, plan less,Do more!
- 20170912
- 牛客网-剑指offer-11-二进制中1的个数
- Spring-AOP @AspectJ进阶之绑定代理对象
- webService的rest风格的接口发布流程
- C#--抽象工厂设计模式--三层框架
- BZOJ 1010 [HNOI2008]玩具装箱TOY (dp+斜率优化)
- 如何解决电商网站超卖现象