🍓 简介:java系列技术分享(👉持续更新中…🔥)
🍓 初衷:一起学习、一起进步、坚持不懈
🍓 如果文章内容有误与您的想法不一致,欢迎大家在评论区指正🙏
🍓 希望这篇文章对你有所帮助,欢迎点赞 👍 收藏 ⭐留言 📝🍓 更多文章请点击
文章目录
- 一、 什么是多数据源?
- 二、 pom.xml 引入依赖
- 三、 配置文件
- 四、 使用介绍
一、 什么是多数据源?
在现代软件架构中,
多数据源
指的是应用程序配置和连接到多个数据库实例的能力。这种架构允许应用程序根据不同的业务需求、数据类型或性能要求,与多个独立的数据库环境交互
。在实现上,每个数据源都有自己的连接池、事务管理和数据访问对象。
二、 pom.xml 引入依赖
<!-- 多数据源依赖 -->
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>dynamic-datasource-spring-boot-starter</artifactId>
<version>3.6.1</version>
</dependency>
三、 配置文件
根据个人数据库,自行修改
spring:
# 数据源配置
datasource:
dynamic:
# 默认数据源,默认master
primary: master
# 严格匹配数据源,默认false. true未匹配到指定数据源时抛异常,false使用默认数据源
strict: false
# 数据库连接信息配置
datasource:
# 主库
master:
driver-class-name: com.mysql.cj.jdbc.Driver
url: jdbc:mysql://127.0.0.1:3306/test_demo?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&serverTimezone=GMT%2B8&useSSL=false&allowPublicKeyRetrieval=true&autoReconnect=true&failOverReadOnly=false
username: root
password: 123456
# 从库
slave:
driver-class-name: com.mysql.cj.jdbc.Driver
url: jdbc:mysql://127.0.0.1:3306/date_source?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&serverTimezone=GMT%2B8&useSSL=false&allowPublicKeyRetrieval=true&autoReconnect=true&failOverReadOnly=false
username: root
password: 123456
四、 使用介绍
**默认加载主库,如果想要用从库slave,那么在与之对应的
service上面或者方法上增加@DS注解
@RestController
public class DataSourceController {
@Autowired
private DataSourceService dataSourceService;
@GetMapping("test1")
public String test1() {
return dataSourceService.test1();
}
@GetMapping("test2")
public String test2() {
return dataSourceService.test2();
}
}
这里为了方便测试就直接通过jdbc查询了
注意@DS()注解即可
@Service
public class DataSourceService {
@Autowired
private JdbcTemplate jdbcTemplate;
@DS("master")
public String test1() {
return jdbcTemplate.queryForObject("select name from user where id = 1", String.class);
}
@DS("slave")
public String test2() {
return jdbcTemplate.queryForObject("select name from user where id = 1", String.class);
}
}
主库
从库
测试结果