Spring Boot + MyBatis-Plus 实现 MySQL 主从复制动态数据源切换(2)
Spring
2. 配置数据源
在application.yml文件中配置主从数据源信息。注意这里我们要搭建主从数据库,只是在一个mysql实例中创建两个库,里面存在相同表
server:
port: 8082
spring:
datasource:
master:
username: root
password: root
url: jdbc:mysql://localhost:3306/shiro_db?useUnicode=true&characterEncoding=utf8
driver-class-name: com.mysql.cj.jdbc.Driver
slave:
username: root
password: root
url: jdbc:mysql://localhost:3306/backend_db?useUnicode=true&characterEncoding=utf8
driver-class-name: com.mysql.cj.jdbc.Driver
mybatis-plus:
mapper-locations: classpath*:/mapper/**/*.xml
3. 创建DatabaseType 枚举类型
创建DatabaseType 枚举类型,用于切换数据源时,确定连接的是哪个数据源
在com.zbbmeta.config包下创建DatabaseType枚举类型
// 定义一个枚举类型 DatabaseType,表示系统中的数据库类型
public enum DatabaseType {
MASTER, // 主数据库类型
SLAVE // 从数据库类型
}
4. 配置数据源上下文
在com.zbbmeta.holder包下创建一个DataSourceContextHolder类用于保存和获取当前线程使用的数据源类型
public class DatabaseContextHolder {
private static final ThreadLocal<DatabaseType> contextHolder = new ThreadLocal<>();
public static void setDatabaseType(DatabaseType databaseType) {
contextHolder.set(databaseType);
}
public static DatabaseType getDatabaseType() {
return contextHolder.get();
}
public static void clearDatabaseType() {
contextHolder.remove();
}
}
5. 配置动态数据源
我们创建了一个DynamicDataSource类,继承AbstractRoutingDataSource,用于实现动态数据源的切换。
AbstractRoutingDataSource是 Spring Framework 提供的一个抽象数据源类,用于实现动态数据源切换。它允许应用程序在运行时动态地切换到不同的数据源,从而支持多数据源的场景,比如数据库读写分离、主从复制等
AbstractRoutingDataSource介绍:
- 动态数据源切换:AbstractRoutingDataSource 的核心思想是根据某个键值(lookup key)来决定使用哪个具体的数据源。这个键值是通过determineCurrentLookupKey()方法提供
- 抽象类:AbstractRoutingDataSource 是一个抽象类,它提供了模板方法 determineCurrentLookupKey(),需要由子类实现
- 实现 javax.sql.DataSource 接口:AbstractRoutingDataSource 实现了 javax.sql.DataSource 接口,因此可以像常规数据源一样被用于与数据库的交互。
相关阅读
-
免费备案二级域名分发解析 永久免费已备案二级域名注册
今天为大家介绍免费备案二级域名分发解析和永久免费已备案二级域名注册的IT知识,一起来了解了解吧。 想要制作一个网站,域名是必不可少的。每个网站都有独一无二的域名,那么新手该
-
什么是服务器虚拟化? 服务器虚拟化的优点
下面为网友们详细介绍什么是服务器虚拟化方面的介绍,一起跟随小编看看吧! 随着云计算平台越来越成熟,服务器虚拟化技术也逐渐普及。服务器虚拟化可以将一台物理服务器分成多个虚拟
-
OSI七层网络模型物理层详解 物理层的主要功能和特点有哪些
下面为网友们详细介绍OSI七层网络模型物理层详解的相关话题,接下来一起来看看吧。 物理层是OSI模型中的第一层,它负责在物理媒介上传输原始比特流,并定义了传输介质、传输速率、编码
-
网站制作要求有哪些内容 简述网页制作的基本步骤
正文核心导读:网站制作要求有哪些内容和简述网页制作的基本步骤方面的内容,具体详情如下: 1、找专业网站建设公司。既为专业,那建站经验很丰富,有着完善的建站流程,高水准的建站


