【干货】SpringBoot整合多数据源

本文介绍了在SpringBoot中整合MyBatis和MyBatis-Plus实现多数据源的详细过程,包括为何使用多数据源、整合方式、具体配置以及在实际操作中可能遇到的问题。文中提供了配置代码示例,并推荐了相关技术专栏。
摘要由CSDN通过智能技术生成

🚐 一、前言

大家好,我是小诚,不知不觉上一次更文已经是20多天前了!其实这段时间也一直没有闲着,一个是在梳理之前的文章知识和资源,用于搭建技术圈子,另外一个就是在思考自己的一个输出方向,社区发展得很迅速,热榜各种各类的文章都有,深思熟虑后,还是坚持文章在精不在多,质量标准更加重要,所以今后博文的方向会更加偏向实战和经验,争取分享更加有价值的博文!

如果文章对你有帮助,可以帮忙一键三连和专栏订阅哦! 技术圈子经过这段时间的筹划,已经初步成型!有兴趣、志同道合的小伙伴可以查看左边导航栏的技术圈子介绍,期待你们的加入!

本篇文章重点介绍SpringBoot集合MyBatis和MyBatis-Plus整合多数据源方面的知识!


二、专栏推荐

🚅 二、专栏推荐

  良心推荐: 下面的相关技术专栏还在免费分享哦,大家可以帮忙点点订阅哦!

  面试干货专栏

  常见开发问题专栏

  JAVA进阶知识专栏

  从0到1-全面深刻理解MySQL系列专栏


三、整合多数据源需要了解的知识


🚔 三、整合多数据源需要了解的知识

  1、何时会使用到多数据源

  一个技术的出现、应用必然是为了解决存在的某些问题,多数据源出现常见的场景如下:

  (1)、与第三方对接时,有些合作方并不会为了你的某些需求而给你开发一个功能,他们可以提供给你一个可以访问数据源的只读账号,你需要获取什么数据由你自己进行逻辑处理,这时候就避免不了需要进行多数据源整合了。

  (2)、业务数据达到了一个量级,使用单一数据库存储达到了一个瓶颈,需要进行分库分表等操作进行数据管理,在操作数据时,不可避免的涉及到多数据源问题。

  2、多数据源整合有哪些方式

  参考了网上的许多材料,发现整合方式无外乎以下几种:

  (1)、使用分包方式,不同的数据源配置不同的MapperScan和mapper文件

  (2)、使用APO切片方式,实现动态数据源切换(如果对Aop不是很熟悉,欢迎查看我之前的一篇文章,这知识保熟哦!【什么是面向切面编程?】)

  (3)、使用数据库代理中间件,如Mycat等

  3、不同方式之间的区别

  (1)、分包方式可以集合JTA(JAVA Transactional API)实现分布式事务,但是整个流程的实现相对来说比较复杂。

  (2)、AOP动态配置数据源方式缺点在于无法实现全局分布式事务,所以如果只是对接第三方数据源,不涉及到需要保证分布式事务的话,是可以作为一种选择。

  (3)、使用数据库代理中间件方式是现在比较流行的一种方式,很多大厂也是使用这种方式,开发者不需要关注太多与业务无关的问题,把它们都交给数据库代理中间件去处理,大量的通用的数据聚合,事务,数据源切换都由中间件来处理,中间件的性能与处理能力将直接决定应用的读写性能,比较常见的有Mycat、TDDL等。现在阿里出了100%自研的分布式数据库OceanBase,从最底层支持分布式,性能也非常强大,大家感兴趣的可以去了解下!

  4、本文实战选择的方式

  鉴于本次遇到需求的整合多数据源的场景是需要 对接第三方的数据,暂不涉及到分布式事务问题 ,所以本文实战整合多数据源使用的方式是【分包方式】实现简单的多数据源整合,至于其他方式和分布式事务的坑,后面再慢慢填吧(o(╥﹏╥)o)!

四、SpringBoot+MyBatis整合多数据源


🚢 四、SpringBoot+MyBatis整合多数据源

🔴 4.1 说明

  本次案例涉及到的代码比较多,因此文章只贴出部分,全部案例代码已经上传到Gitee,需要者可直接访问:【SpringBoot结合MyBatis整合多数据源】,项目结构如下:

在这里插入图片描述

 

🟠 4.2 涉及依赖包

spring-boot-starter-web – web相关支持
mybatis-spring-boot-starter – springboot整合mybatis依赖
mysql-connector-java – mysql数据驱动
lombok – 自动生成实体类常用方法依赖包
hutool-all – 常用方法封装依赖包

<dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
        <dependency>
            <groupId>org.mybatis.spring.boot</groupId>
            <ar

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要在 Spring Boot 中整合 Jolt,你可以按照以下步骤进行操作: 1. 添加依赖:在你的 Spring Boot 项目的 pom.xml 文件中,添加 Jolt 的依赖。你可以在 Maven 中央仓库中找到最新的 Jolt 依赖版本。例如: ```xml <dependency> <groupId>com.bazaarvoice.jolt</groupId> <artifactId>jolt</artifactId> <version>0.4.0</version> </dependency> ``` 2. 创建 Jolt 转换规则:在你的项目中创建一个 JSON 文件,定义 Jolt 转换规则。例如,创建一个名为 `jolt-spec.json` 的文件,内容如下: ```json [ { "operation": "shift", "spec": { "name": "firstName", "age": "age" } } ] ``` 这个规则将把输入 JSON 中的 "name" 字段映射到输出 JSON 的 "firstName" 字段,将 "age" 字段映射到输出 JSON 的 "age" 字段。 3. 创建 Jolt 转换类:在你的 Spring Boot 项目中创建一个类,用于加载和应用 Jolt 转换规则。例如,创建一个名为 `JoltTransformer.java` 的类: ```java import com.bazaarvoice.jolt.Chainr; import com.bazaarvoice.jolt.JsonUtils; import java.util.List; public class JoltTransformer { private Chainr chainr; public JoltTransformer() { List<Object> specs = JsonUtils.classpathToList("/jolt-spec.json"); chainr = Chainr.fromSpec(specs); } public Object transform(Object input) { return chainr.transform(input); } } ``` 这个类加载了之前定义的 Jolt 转换规则,并提供了一个 `transform` 方法用于应用规则。 4. 使用 Jolt 转换:在你的 Spring Boot 项目中,使用 JoltTransformer 类来进行 JSON 数据转换。例如,创建一个名为 `JoltController.java` 的控制器类: ```java import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RestController; @RestController public class JoltController { private JoltTransformer joltTransformer; public JoltController(JoltTransformer joltTransformer) { this.joltTransformer = joltTransformer; } @PostMapping("/transform") public Object transformJson(@RequestBody Object input) { return joltTransformer.transform(input); } } ``` 这个控制器类使用了 JoltTransformer 类进行 JSON 数据转换。当 POST 请求发送到 "/transform" 路径时,它会将请求体中的 JSON 数据应用 Jolt 转换规则,并返回转换后的结果。 5. 运行应用程序:启动你的 Spring Boot 应用程序,并访问 "/transform" 路径进行测试。你可以通过发送 JSON 数据的 POST 请求来测试转换功能。 以上是整合 Spring Boot 和 Jolt 的基本步骤,你可以根据自己的需求进行进一步的扩展和定制。希望对你有所帮助!
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值