spring-boot-note5----dynamicDatasource

本文介绍了Spring Boot中动态数据源的使用方法,主要用于实现多个数据库的切换,如读写分离和业务分库。核心是继承AbstractRoutingDataSource并覆写determineCurrentLookupKey方法,通过DbContextHolder管理线程局部变量来切换数据源。配置包括在app.properties中设置数据源、定义普通数据源Bean、配置动态数据源,并通过DBEnum枚举和DbContextHolder进行切换操作。
摘要由CSDN通过智能技术生成

spring-dynamicDatasource,spirng动态数据源在spring-boot的使用方式。

 动态数据源主要使用就是多个库动态切换,比如主从读写分离,垂直分库,业务分库等等需求。

主要原理:

  动态数据源的原理就是继承AbstractRoutingDataSource,实现其中的一个determineCurrentLookupKey方法

	/**
	 * 如何获取数据源(bean的名称)的方式,从我们实现的DbContextHolder线程变量中获取。
	 **/
	@Override
	protected Object determineCurrentLookupKey() {
		 return DbContextHolder.getDbType();
	}

这个方法返回的字符串,会在spring容器中已经配置的数据源map表中查找,查找到了就返回对应的数据源。DbContextHolder主要是包装了一个线程局部变量。

具体使用:  (创建2个数据库,db_0 , db_1 ,2个库都有一个user表(id,name,age),这个步骤省略) 

1、在app.properties配置2个数据源

## 默认数据源指定为dataSource_zero
spring.dynamicDatasource.defaultDataSource=dataSource_zero
spring.datasource.my.type=com.alibaba.druid.pool.DruidDataSource

## zero数据源
spring.datasource.dataSource_zero.url=jdbc:mysql://127.0.0.1:3306/db_0?useUnicode=true&characterEncoding=UTF-8&useSSL=false&rewriteBatchedStatements=true
spring.datasource.dataSource_zero.username=root
spring.datasource.dataSource_zero.password=123456
spring.datasource.dataSource_zero.driverClassName=com.mysql.jdbc.Driver

## one号数据源
spring.datasource.dataSource_one.url=
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值