在一般的Java项目中,如果使用Spring去管理数据库连接信息,一般只能连接一个数据库,可是会有部分情况我们需要连接多个数据库,甚至还会存在不同的请求需要根据配置信息连接不同的数据库,比如:
在很多sass系统中,是采用分库部署的方式,就是不同账号连接的是不同的数据库,可是服务只有一个,所以就需要根据登录的账号信息动态切换数据源。
下面给出一个简单的demo,如果有需要大家可以根据自己的情况去改写。
我们知道,spring在执行sql的时候,是要先获取DataSource对象,然后getConnection获取连接,然后再执行excuteSql去真正执行sql语句。所以在sql执行之前将DataSource对象替换掉,就能动态切换数据源。
这里我们需要用到抽象类AbstractRoutingDataSource,我们需要继承这个类,并且重写determineTargetDataSource方法,这个方法会返回DataSource对象。
@Component
public class DynamicDataSource extends AbstractRoutingDataSource {
public final static String JDBC_CONNECT_PARAM = "?useUnicode=true&characterEncoding=UTF-8&useSSL=true&serverTimezone=Asia/Shanghai&nullCatalogMeansCurrent=true";
static RedissonClient redissonClient;
@Autowired
public void setRedisCache(RedissonClient redissonClient) {
DynamicDataSource.redissonClient = redissonClient;
}
/**
* 数据源MAP
*/
public stati

本文介绍了如何在Spring项目中使用AbstractRoutingDataSource动态管理多个数据库连接,根据登录账号信息自动切换数据源,通过Redis存储数据库配置。实例演示了如何设置数据源和测试方法,适用于分库部署的系统需求。
最低0.47元/天 解锁文章
1757

被折叠的 条评论
为什么被折叠?



