<p align="center">
<img src="https://images.gitee.com/uploads/images/2019/0626/231046_f44892b9_709883.png" border="0" />
</p>
<p align="center">
<strong>一个基于springboot的快速集成多数据源的启动器</strong>
</p>
<p align="center">
<a >
<img src="https://github.com/baomidou/dynamic-datasource-spring-boot-starter/workflows/CodeQL/badge.svg?branch=master" >
</a>
<a>
<img src="https://badgen.net/github/stars/baomidou/dynamic-datasource-spring-boot-starter" >
</a>
<a href="https://mvnrepository.com/artifact/com.baomidou/dynamic-datasource-spring-boot-starter" target="_blank">
<img src="https://img.shields.io/maven-central/v/com.baomidou/dynamic-datasource-spring-boot-starter.svg" >
</a>
<a href="https://www.apache.org/licenses/LICENSE-2.0.html" target="_blank">
<img src="https://img.shields.io/:license-apache-brightgreen.svg" >
</a>
<a>
<img src="https://img.shields.io/badge/JDK-1.7+-green.svg" >
</a>
<a>
<img src="https://img.shields.io/badge/springBoot-1.5.x__2.x.x-green.svg" >
</a>
<a href="https://www.jetbrains.com">
<img src="https://img.shields.io/badge/IntelliJ%20IDEA-support-blue.svg" >
</a>
<a>
<img src="https://img.shields.io/badge/License-Apache%202.0-blue.svg" >
</a>
<a target="_blank" href="//shang.qq.com/wpa/qunwpa?idkey=ded31006508b57d2d732c81266dd2c26e33283f84464e2c294309d90b9674992"><img border="0" src="https://pub.idqqimg.com/wpa/images/group.png" alt="dynamic-sring-boot-starter" title="dynamic-sring-boot-starter"></a>
</p>
# 简介
dynamic-datasource-spring-boot-starter 是一个基于springboot的快速集成多数据源的启动器。
其支持 **Jdk 1.7+, SpringBoot 1.4.x 1.5.x 2.x.x**。
## 文档 | Documentation
详细文档 https://www.kancloud.cn/tracy5546/dynamic-datasource/2264611
# 特性
- 支持 **数据源分组** ,适用于多种场景 纯粹多库 读写分离 一主多从 混合模式。
- 支持数据库敏感配置信息 **加密(可自定义)** ENC()。
- 支持每个数据库独立初始化表结构schema和数据库database。
- 支持无数据源启动,支持懒加载数据源(需要的时候再创建连接)。
- 支持 **自定义注解** ,需继承DS(3.2.0+)。
- 提供并简化对Druid,HikariCp,BeeCp,Dbcp2的快速集成。
- 提供对Mybatis-Plus,Quartz,ShardingJdbc,P6sy,Jndi等组件的集成方案。
- 提供 **自定义数据源来源** 方案(如全从数据库加载)。
- 提供项目启动后 **动态增加移除数据源** 方案。
- 提供Mybatis环境下的 **纯读写分离** 方案。
- 提供使用 **spel动态参数** 解析数据源方案。内置spel,session,header,支持自定义。
- 支持 **多层数据源嵌套切换** 。(ServiceA >>> ServiceB >>> ServiceC)。
- 提供 **基于seata的分布式事务方案** 。
- 提供 **本地多数据源事务方案。**
# 约定
1. 本框架只做 **切换数据源** 这件核心的事情,并**不限制你的具体操作**,切换了数据源可以做任何CRUD。
2. 配置文件所有以下划线 `_` 分割的数据源 **首部** 即为组的名称,相同组名称的数据源会放在一个组下。
3. 切换数据源可以是组名,也可以是具体数据源名称。组名则切换时采用负载均衡算法切换。
4. 默认的数据源名称为 **master** ,你可以通过 `spring.datasource.dynamic.primary` 修改。
5. 方法上的注解优先于类上注解。
6. DS支持继承抽象类上的DS,暂不支持继承接口上的DS。
# 使用方法
1. 引入dynamic-datasource-spring-boot-starter。
```xml
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>dynamic-datasource-spring-boot-starter</artifactId>
<version>${version}</version>
</dependency>
```
2. 配置数据源。
```yaml
spring:
datasource:
dynamic:
primary: master #设置默认的数据源或者数据源组,默认值即为master
strict: false #严格匹配数据源,默认false. true未匹配到指定数据源时抛异常,false使用默认数据源
datasource:
master:
url: jdbc:mysql://xx.xx.xx.xx:3306/dynamic
username: root
password: 123456
driver-class-name: com.mysql.jdbc.Driver # 3.2.0开始支持SPI可省略此配置
slave_1:
url: jdbc:mysql://xx.xx.xx.xx:3307/dynamic
username: root
password: 123456
driver-class-name: com.mysql.jdbc.Driver
slave_2:
url: ENC(xxxxx) # 内置加密,使用请查看详细文档
username: ENC(xxxxx)
password: ENC(xxxxx)
driver-class-name: com.mysql.jdbc.Driver
#......省略
#以上会配置一个默认库master,一个组slave下有两个子库slave_1,slave_2
```
```yaml
# 多主多从 纯粹多库(记得设置primary) 混合配置
spring: spring: spring:
datasource: datasource: datasource:
dynamic: dynamic: dynamic:
datasource: datasource: datasource:
master_1: mysql: master:
master_2: oracle: slave_1:
slave_1: sqlserver: slave_2:
slave_2: postgresql: oracle_1:
slave_3: h2: oracle_2:
```
3. 使用 **@DS** 切换数据源。
**@DS** 可以注解在方法上或类上,**同时存在就近原则 方法上注解 优先于 类上注解**。
| 注解 | 结果 |
| :-----------: | :--------------------------------------: |
| 没有@DS | 默认数据源 |
| @DS("dsName") | dsName可以为组名也可以为具体某个库的名称 |
```java
@Service
@DS("slave")
public class UserServiceImpl implements UserService {
@Autowired
private JdbcTemplate jdbcTemplate;
public List selectAll() {
return jdbcTemplate.queryForList("select * from user");
}
@Override
@DS("slave_1")
public List selectByCondition() {
return jdbcTemplate.queryForList("select * from user where age >10");
}
}
```
没有合适的资源?快使用搜索试试~ 我知道了~
dynamic datasource 多数据源启动器.rar
共86个文件
java:68个
yml:3个
md:3个
需积分: 5 0 下载量 63 浏览量
2023-07-04
19:57:47
上传
评论
收藏 207KB RAR 举报
温馨提示
相信在很多使用MybatisPlus框架的小伙伴都会遇到多数据源的配置问题,并且官网也给出了推荐使用多数据源 (dynamic-datasource-spring-boot-starter) 组件来实现。由于最近项目也在使用这个组件来实现多数据源切换,因此想了解一下该组件是如何运行的,经过自己的调试,简单记录一下这个组件的实现,也以便日后组件如果出问题了或者某些地方需要开次开发时有个参考。 1 简单实现数据源切换 1.1 数据库demo 本例子使用的是同一个MYSQL服务,不同数据库来进行调试的,
资源推荐
资源详情
资源评论
收起资源包目录
dynamic datasource 多数据源启动器.rar (86个子文件)
dynamic datasource 多数据源启动器
脚本之家.url 179B
java历史进程.pdf 214KB
服务器软件.url 122B
dynamic-datasource-spring-boot-starter-v3.6.0
pom.xml 11KB
.github
workflows
maven.yml 569B
codeql-analysis.yml 2KB
FUNDING.yml 103B
ISSUE_TEMPLATE 495B
src
main
resources
META-INF
spring
org.springframework.boot.autoconfigure.AutoConfiguration.imports 93B
spring.factories 157B
java
com
baomidou
dynamic
datasource
annotation
DS.java 1KB
DSTransactional.java 889B
Master.java 856B
Slave.java 854B
spring
boot
autoconfigure
DatasourceInitProperties.java 1KB
beecp
BeeCpConfig.java 2KB
DynamicDataSourceCreatorAutoConfiguration.java 4KB
DynamicDataSourcePropertiesCustomizer.java 1017B
DynamicDatasourceAopProperties.java 1KB
druid
DruidWallConfigUtil.java 2KB
DruidLogConfigUtil.java 2KB
DruidConsts.java 2KB
DruidConfig.java 13KB
DruidDynamicDataSourceConfiguration.java 2KB
DruidStatConfigUtil.java 2KB
DynamicDataSourceAutoConfiguration.java 7KB
hikari
HikariCpConfig.java 2KB
DataSourceProperty.java 3KB
DynamicDataSourceProperties.java 4KB
dbcp2
Dbcp2Config.java 2KB
processor
DsProcessor.java 2KB
jakarta
DsJakartaHeaderProcessor.java 2KB
DsJakartaSessionProcessor.java 2KB
DsSessionProcessor.java 1KB
DsSpelExpressionProcessor.java 3KB
DsHeaderProcessor.java 1KB
toolkit
DynamicDataSourceContextHolder.java 3KB
ConfigMergeCreator.java 4KB
DsConfigUtil.java 4KB
CryptoUtils.java 9KB
Base64.java 10KB
provider
DynamicDataSourceProvider.java 1KB
YmlDynamicDataSourceProvider.java 1KB
AbstractJdbcDataSourceProvider.java 3KB
AbstractDataSourceProvider.java 2KB
creator
Dbcp2DataSourceCreator.java 3KB
BeeCpDataSourceCreator.java 3KB
BasicDataSourceCreator.java 4KB
JndiDataSourceCreator.java 2KB
HikariDataSourceCreator.java 4KB
AbstractDataSourceCreator.java 5KB
DataSourceCreator.java 1KB
DruidDataSourceCreator.java 11KB
DefaultDataSourceCreator.java 2KB
ds
ItemDataSource.java 3KB
AbstractRoutingDataSource.java 3KB
GroupDataSource.java 2KB
event
DataSourceInitEvent.java 1KB
EncDataSourceInitEvent.java 2KB
enums
SeataMode.java 822B
plugin
MasterSlaveAutoRoutingPlugin.java 3KB
support
ScriptRunner.java 2KB
DdConstants.java 1KB
DataSourceClassResolver.java 8KB
exception
CannotFindDataSourceException.java 1023B
ErrorCreateDataSourceException.java 1KB
DynamicRoutingDataSource.java 11KB
aop
DynamicLocalTransactionInterceptor.java 2KB
DynamicDataSourceAnnotationAdvisor.java 5KB
DynamicDataSourceAnnotationInterceptor.java 2KB
DynamicDatasourceNamedInterceptor.java 5KB
tx
TransactionContext.java 2KB
LocalTxUtil.java 2KB
ConnectionProxy.java 10KB
ConnectionFactory.java 2KB
strategy
RandomDynamicDataSourceStrategy.java 1KB
DynamicDataSourceStrategy.java 1KB
LoadBalanceDynamicDataSourceStrategy.java 1KB
LICENSE 10KB
CONTRIBUTING.md 26B
CODE_OF_CONDUCT.md 3KB
.gitignore 267B
license.txt 584B
README.md 6KB
PULL_REQUEST_TEMPLATE 229B
jb51.net.txt 4KB
共 86 条
- 1
资源评论
野生的狒狒
- 粉丝: 1687
- 资源: 1668
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功