当前位置: 首页 > news >正文

网页设计特效网站熊猫关键词工具

网页设计特效网站,熊猫关键词工具,唐山注册公司网上申请入口,wordpress获取指定分类的图像描述大家好,我是此林。 SpringBoot 手动实现动态切换数据源 DynamicSource (上)-CSDN博客 在上一篇博客中,我带大家手动实现了一个简易版的数据源切换实现,方便大家理解数据源切换的原理。今天我们来介绍一个开源的数据源…

大家好,我是此林。

SpringBoot 手动实现动态切换数据源 DynamicSource (上)-CSDN博客

在上一篇博客中,我带大家手动实现了一个简易版的数据源切换实现,方便大家理解数据源切换的原理。今天我们来介绍一个开源的数据源切换框架,是baomidou 旗下和 Mybatis-plus 同级的开源框架:dynamic-datasource-spring-boot-starter。

1. 简介

dynamic-datasource-spring-boot-starter 是一个基于springboot的快速集成多数据源的启动器。

其支持 Jdk 1.7+, SpringBoot 1.5.x 2.x.x 3.x.x
JPA用户不建议使用,JPA自带事务,无法连续切库。

2. 使用

下面基于SpringBoot2 做演示。

1.pom.xml

<dependency><groupId>com.baomidou</groupId><artifactId>dynamic-datasource-spring-boot-starter</artifactId><version>4.3.1</version>
</dependency>

2.application.yml

spring:datasource:dynamic:primary: master #设置默认的数据源或者数据源组,默认值即为masterstrict: false #严格匹配数据源,默认false. true未匹配到指定数据源时抛异常,false使用默认数据源datasource:master:url: jdbc:mysql://192.168.183.128:3306/userusername: rootpassword: 123456slave_1:url: jdbc:mysql://192.168.183.128:3307/userusername: rootpassword: 123456slave_2:url: jdbc:mysql://192.168.183.128:3308/userusername: rootpassword: 123456

参数说明:

以上会配置一个默认库master,一个组slave下有两个子库slave_1,slave_2

后续我们会使用AOP注解的方式指定数据源。

例如:@DS("master")、@DS("slave")

  1. 配置文件所有以下划线 _ 分割的数据源 首部 即为组的名称,相同组名称的数据源会放在一个组下。
  2. 切换数据源可以是组名,也可以是具体数据源名称。组名则切换时采用负载均衡算法切换。

例如:当我们使用@DS("slave")时,指定了组名  “slave”,那么它会采用负载均衡算法自动切换数据源。

因为我们后续希望实现Mysql主从读写分离,所有写操作走master数据库,所有读操作走slave从数据库。

3. 使用 @DS 切换数据源。

@Service
public class UserServiceImpl implements UserService {@Autowiredprivate UserMapper userMapper;@Overridepublic void insert(User user) {userMapper.insert(user);}@Override@DS("slave_1")public List<User> selectAll() {userMapper.selectAll();}@Override@DS("slave")public User selectById(Integer id) {return userMapper.selectById(id);}
}

说明:

insert() 方法没有加@DS,默认使用master数据库。

selectAll() 方法指定使用数据源slave_1

selectById() 使用slave组,自动负载均衡查询。

注:@DS 可以注解在方法上或类上,同时存在就近原则 方法上注解 优先于 类上注解

若要实现Mysql主从自动复制,还需要配置mysql主从复制,详情参考博客:

ShardingSphere5:Mysql主从集群搭建、读写分离_shardingsphere mysql读写分离-CSDN博客

其中SpringBoot配置 ShardingSphere5 这一块不用管,Mysql主从集群搭建是不变的。

4.其他实现

3. 底层原理

1. SpringBoot自动配置

我们找到 DynamicDataSourceAutoConfiguration.class。 这是框架的自动配置类。

这一段是从我们配置的application.yml 读取并设置相关属性,也就是我们配置的数据源信息。

具体的话,是赋值给 DynamicRoutingDataSource 这个对象。

2. 扫描@DS注解

这是 DynamicDataSourceAnnotationInterceptor 的 invoke 方法,典型的AOP。

在所有加了@DS的方法上,

1. 当执行目标方法的时候,会先获取到@DS("XXX")中数据源的名称,dsKey。

2. 然后再把dsKey 存到ThreadLocal中,也就是图中的DynamicDataSourceContextHolder。

3. 最后再开始执行目标方法。

3. DynamicRoutingDataSource

回到我们之前自动配置里说的 DynamicRoutingDataSource

观察 DynamicRoutingDataSource 的继承关系链,发现它实现了Spring的 DataSource 和 InitializingBean 接口。

这和我们上一篇博客手动实现数据源切换的思路是一样的。

在 DynamicRoutingDataSource 里,determineDataSource 从 ThreadLocal 里 获取到指定数据源名称

最后通过名称返回对应的DataSource数据源。

对比上一篇博客,

SpringBoot 手动实现动态切换数据源 DynamicSource (上)-CSDN博客

其实思路大差不差,只不过 dynamic-datasource-spring-boot-starter 更加完善,增加了AOP注解功能。

4. 无注解切换数据源

1. 自定义切面,结合 DynamicDatasourceNamedInterceptor ,对于所有以 select 方法开头的,设置使用 slave 数据源, 对于add、update、delete 开头的使用 master 数据源。

2. 自定义 Mybatis 拦截器,对于所有的写操作使用 master 数据源,所有读操作使用 slave 数据源。(即:把数据源标识写入 DynamicDataSourceContextHolder 中)。

3. 其他场景:SaaS多租户系统下,每个租户使用独立的数据库,那么可以要求前端携带请求头 “dsKey”。配置自定义拦截器,拦截请求,把dsKey 写入 DynamicDataSourceContextHolder。

今天的分享就到这里。

我是此林,关注我吧,带你看不一样的世界!

http://www.tj-hxxt.cn/news/41539.html

相关文章:

  • 网站建设设计策划宁波优化网站哪家好
  • 怎么在网站上投放广告网络营销带来的效果
  • 普通网站服务器seo网上课程
  • 怎么做58同城网站今日国内重大新闻
  • 淘宝店网页制作教程重庆seo排名方法
  • 日照网站搜索引擎优化厦门seo外包服务
  • 制作图片网站百度推广登陆入口官网
  • 外贸建站wordpress免费建站系统哪个好用吗
  • 电子商务网站 备案seo com
  • 连接国外网站做端口映射优化大师网页版
  • 凡客诚品批发网百度seo关键词排名推荐
  • 上海个人网站建设百度手机助手app免费下载
  • 百度如何收录网站网络广告推广方法
  • 建设网站需要具备什么条件免费网络推广公司
  • 网站设计规划 优帮云软文广告经典案例800字
  • 网站总浏览量百度seo服务公司
  • 多个招聘网站格式不一致如何做招聘记录吸引人的软文标题
  • 电商直播培训东莞网站seo推广
  • dede手机网站网站推广怎样做
  • 做网站最重要的是什么注册推广赚钱一个10元
  • 天津网站建设哪里好seo点击排名源码
  • 计算机应用网站建设与维护是做什么黄冈地区免费网站推广平台
  • 郑州汉狮做网站费用百度大数据官网
  • 网站引导动画怎么做的营销策略的重要性
  • 建站一条龙设计制作移动端排名优化软件
  • 建网站logo怎么做常州网络推广seo
  • 域名如何注册?电商关键词排名优化怎么做?
  • wordpress最新淘宝客程序网站seo关键词优化技巧
  • 网站360做的标记如何取消产品推广步骤
  • 天津市建设工程定额网站上海优化seo排名