shardingsphere从4.1.1升级到5.2.1

作为工程师都希望自己的产品能够大卖,而项目开发中使用的技术不可能所有都是自己写的,使用到的开源组件例如shardingsphere这样好的组件,也会随着用户量的增加而需要升级,没必要非得像hutool那样非得自己写一边,当然hutool很优秀。
原先产品中使用的是4.1.1版本,这是2020年的版本,今年是2024年,已经过去了4年,可以升级了。升级之前先看了,shardingsphere升级至5.1.2配置遇坑
1 Consider defining a bean named ‘shardingDataSource’ in your configuration.

Parameter 0 of method sqlSessionFactory in com.baomidou.mybatisplus.autoconfigure.MybatisPlusAutoConfiguration required a bean named 'shardingDataSource' that could not be found.The injection point has the following annotations:- @org.springframework.beans.factory.annotation.Autowired(required=true)
Action:Consider defining a bean named 'shardingDataSource' in your configuration.

下图进去了,好像也不会影响,因为4.1.1版本也是为空,但执行这一步后会从nacos中获取sharding的配置,但升级后却没有加载,这是为什么呢?
1
查看mybatis-plus的配置,这里是加载了nacos的配置
1
但我的分表配置是按照下方模式加载进来的,那么sharding-sphere.yaml是如何被sharding识别的呢?
1
ShardingSphere5.x.x(最新版)配置MySQL读写分离,我使用的spring版本是2.7.9,因此使用5.2.1就可以,不需要再往上升级,这个也是使用jdk1.8的需要.问题应该是出在程序没有加载到nacos中的配置,但这是为什么呢?这个问题还真不知道从哪里下牙。当我看到5.2.1的文档时,
1
type变更为data-source-class-name
1
结果出现了下面的异常,那是不是说配置读取到了

Caused by: java.lang.NullPointerException: nullat org.apache.shardingsphere.spring.boot.datasource.DataSourceMapSetter.getDataSource(DataSourceMapSetter.java:90)at org.apache.shardingsphere.spring.boot.datasource.DataSourceMapSetter.getDataSourceMap(DataSourceMapSetter.java:65)at org.apache.shardingsphere.spring.boot.ShardingSphereAutoConfiguration.setEnvironment(ShardingSphereAutoConfiguration.java:120)

调试看,果然配置读取到了。
1
改回type后,可以看到配置,那么到底是什么导致mybatplus报错呢?
1
主库和影子库都可以读取到对应的配置
1
但是动态数据源却找不到shardingDataSource,那么这个shardingDataSource是从哪里配置的呢?没有地方给他初始化,直接使用肯定会报错,但为什么4.1.1没有这个问题呢?
1
下载4.1.15.2.1的源码可以看到差异
1
SHARDING_PREFIX调整为从spring.shardingsphere.sharding调整为spring.shardingsphere.rules.sharding
1
那么是否改配置就可以了呢?事实上还是没有解决问题,还需继续跟踪,4.1.1存在default-data-source-name,但是在5.2.1中,这个配置没有了
2
所以在4.1.1的环境中,才可以找到默认的数据配置,看来最终的问题转换为默认数据源了
1
接着查看ShardingSphere5.x分库分表使用,他采用的是5.1.1,但是下图5.2.1位置应该是获取不到dataSource.getContextManager()
2
从git上下载源码,查看得到5.1.0
在这里插入图片描述
但是到了5.2.1@Getter没有了
1

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/815754.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

MySQL基础入门上篇

MySQL基础 介绍 mysql -uroot -p -h127.0.0.1 -P3306项目设计 具备数据库一定的设计能力和操作数据的能力。 数据库设计DDL 定义 操作 显示所有数据库 show databases;创建数据库 create database db02;数据库名唯一,不能重复。 查询是否创建成功 加入一些…

lesson02 类与对象(上)

1.类的定义 2.类的访问限定符及封装 3.类的作用域 4.类的实例化 5.类的对象的大小计算 6.类成员函数的this指针 1.类的定义 class className {//类体:由成员函数和成员变量组成 }; class是声明类的关键字,className是类的名字,花括号…

JVM修炼之路【12】- GC调优 、性能调优

上一篇中 我们详细讲了内存溢出 内存泄漏 还有相关的案例。 这篇博客中我们主要了解一下GC调优。 有些新手可能会有一点 疑问—— 这两者不是一回事吗?? 其实说一回事 也没错 因为GC调优本质上还是针对 堆上的内存 只不过前面我们关注的侧重点在于 不合…

软件设计师——软件工程基础知识

软件工程基础知识 软件过程软件过程模型软件测试方法进度管理软件复杂性度量环路复杂度耦合聚合和组合 软件过程 软件过程模型 软件测试方法 黑盒测试和白盒测试 白盒测试中,语句覆盖对程序执行逻辑的覆盖很低,因此一般认为它是很弱的逻辑覆盖。 进度管…

Golang 为什么要使用接口

接口的存在本质上是为了抽象化,这里理解的重点是: 一个类型如果拥有一个接口需要的所有方法,那么这个类型就实现了这个接口 这说明接口一个很重要的特点就是抽象,把不同类型的相同特点进行抽象统一。 下面举一个例子&#xff0…

dfslieti

oibh 总部突然被水淹没了!现在需要你的救援…… 题目描述 oibh 被突来的洪水淹没了,还好 oibh 总部有在某些重要的地方起一些围墙。用 * 号表示,而一个四面被围墙围住的区域洪水是进不去的。 oibh 总部内部也有许多重要区域,每个…

NCC常见的问题

NCC常见的问题 问题一 问题 前端界面节点打开报错,界面显示Cannot GET /xxx/xxx/xxx/main/index.html 解决方法 前端工程config.json里面没有配置对应节点的路径。把"./src/xxx/xxx/xxx/main/index.js"路径配置到config.json文件的buildEntryPath里面&am…

AcWing 898 数字三角形

给定一个如下图所示的数字三角形,从顶部出发,在每一结点可以选择移动至其左下方的结点或移动至其右下方的结点,一直走到底层,要求找出一条路径,使路径上的数字的和最大。 73 88 1 02 7 4 4 4 5 2 6 …

Kylin使用心得

一、初识Kylin 什么是Apache Kylin? Apache Kylin,中文名“凯林”,是一款专为大数据量设计的OLAP(在线分析处理)引擎。简单来说,它就像一个超级数据分析师,能帮助你快速、准确地从海量数据中提…

【Django开发】0到1美多商城项目md教程第7篇:登录,1. 互联开发者申请步骤【附代码文档】

美多商城完整教程(附代码资料)主要内容讲述:欢迎来到美多商城!,项目准备。展示用户注册页面,创建用户模块子应用。用户注册业务实现,用户注册前端逻辑。图形验证码,图形验证码接口设…

HarmonyOS实战开发-自定义分享

介绍 自定义分享主要是发送方将文本,链接,图片三种类型分享给三方应用,同时能够在三方应用中展示。本示例使用数据请求 实现网络资源的获取,使用屏幕截屏 实现屏幕的截取,使用文件管理 实现对文件,文件目录的管理&…

地球上的七大洲介绍

地球上的七大洲示意图: 1. 亚洲(Asia):世界上最大的洲,面积约为44579000平方公里。亚洲地域辽阔,包括从北极圈到赤道的各种气候和地形。它拥有世界上最多的人口,也是世界上一些最古老文明的发源…

transformer上手(4) —— 模型与分词器

1 模型 除了像之前使用 AutoModel 根据 checkpoint 自动加载模型以外,我们也可以直接使用模型对应的 Model 类,例如 BERT 对应的就是 BertModel: from transformers import BertModel model BertModel.from_pretrained("bert-base-ca…

28、链表-两数相加

思路: 有几个方面需要考虑 双指针遍历,如果出现和大于10那么向前进1如果长度不一样那么长的部分直接落下并且考虑进1 的问题 代码如下: class Solution {public ListNode addTwoNumbers(ListNode l1, ListNode l2) {if (l1null||l2null){…

【40分钟速成智能风控14】数据处理和特征工程

目录 智能模型数据处理 重复值处理 一致性检验 数据交叉验证 线上线下验证 有效性检验 业务经验 数据分析 特征工程和特征筛选 探索性数据分析 字符型特征 缺失率过高 类别过少 异常值处理 智能模型数据处理 重复值处理 保证数据的唯一性也是数据清洗过程中需要…

python 动态规划 最长回文子串

给你一个字符串 s,找到 s 中最长的回文子串。 如果字符串的反序与原始字符串相同,则该字符串称为回文字符串。 #我们用 P(i,j) 表示字符串 s 的第 i 到 j个字母组成的串(下文表示成 s[i:j])是否为回文串: #也就是说…

金融机构与金融市场监管

金融机构与金融市场监管 中国的金融监管机构银行业监管的必要性银行业监管的基本目标银行业监管的基本内容商业银行的设立审批制度银行业日常监督管理流动性要求资产质量监管合理的内部控制制度风险集中和风险暴漏的监管银行资本风险资本的计算资本充足率的计算 中国的金融监管…

Hadoop+Spark大数据技术(微课版)曾国荪、曹洁版思维导图第四次作业 (第4章 HBase分布式DB)

1.简述Hbase的特点及与传统关系数据库的区别 HBase与传统关系数据库的区别 (1)数据类型 关系数据库具有丰富的数据类型,如字符串型、数值型、日期型、二进制型等。HBase只有字符串数据类型,数据的实际类型都是交由用户自己编写程序…

贡献者契约行为准则

文章目录 要点文献 要点 准则而已 文献 https://www.kernel.org/doc/html/latest/translations/zh_CN/process/code-of-conduct.html https://www.kernel.org/doc/html/latest/translations/zh_CN/process/code-of-conduct-interpretation.html#cn-code-of-conduct-interpre…

【JSON2WEB】14 基于Amis的CRUD开发30分钟速成

【JSON2WEB】系列目录 【JSON2WEB】01 WEB管理信息系统架构设计 【JSON2WEB】02 JSON2WEB初步UI设计 【JSON2WEB】03 go的模板包html/template的使用 【JSON2WEB】04 amis低代码前端框架介绍 【JSON2WEB】05 前端开发三件套 HTML CSS JavaScript 速成 【JSON2WEB】06 JSO…