mybatisplus 多数据源_SpringBoot + MyBatis Plus多租户动态数据源

本文介绍了如何在SpringBoot应用中结合MyBatis Plus实现多租户动态数据源切换。通过Nginx代理进行租户识别,自定义拦截器保存租户信息,并重写MyBatis数据源初始化,实现根据租户动态选择数据源。同时,文章探讨了租户信息在微服务间的传递和通过注解指定数据源等问题。
摘要由CSDN通过智能技术生成

背景

需求场景是需要实现一个支持多租户多数据源的系统,每个租户的数据库完全隔离。并且系统需求通过区分不同租户的请求进行动态数据源的切换。

系统底层框架是使用的SpringCloud + MyBatisPlus(一个MyBatis的增强框架),数据库连接池是Druid。

熟悉SpringBoot的同学都知道SpringBoot本身是可以配置多个数据源的,但是SpringBoot的多数据做不到动态的切换,只能在代码里面通过注解或写死。

基于以上情况,设计实现了一个动态切换数据源的实现方案。

实现功能

  • 通过域名进行租户自动识别
  • 通过租户识别信息,动态的选择数据源
  • 各个spring微服务之间进行租户信息传递
  • 通过注射方式进行强制数据源制定

下面介绍一下功能的核心实现。

核心实现

租户识别

租户信息的识别通过Nginx代理来实现,核心思路就是域名中包含租户信息,然后通过Nginx代理时,在请求头和相应头中添加租户的识别信息。

servier 

如上配置后,通过Nginx代理后的请求都会带上租户信息。eg: http://abc.zane.com通过这个域名访问系统时会识别出租户为abc。

动态切换

这个是方案的核心部分,重写了MyBatis的数据源初始化过程。 讲解一下核心实现原理及核心的代码部分。

主要通过以下步骤实现: 1. 配置Spring拦截器,设置租户标示

pub
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值