复盘springboot配置shardingsphere-jdbc的一些问题

一、项目相关依赖

        springboot3.2.5 + mybatis3.0.3 + shardingsphere-jdbc5.2.1 + druid1.2.22

二、出现问题:

        在使用中发现分表配置没有生效,因为数据库存在和逻辑表名相同的物理表,所以没有及时发现这个问题。

三、解决过程:

        1、发现分表配置未生效(即逻辑表user_info未映射到物理表user_info_1上),怀疑是配置出错,所以将springboot启动日志改为debug,观察shardingsphere的配置加载情况,发现了以下信息:

                果然是配置文件的问题,然后发现YamlShardingRuleSpringBootConfiguration里的配置路径是:

        最后发现yaml配置文件中少了rules这一层级。

        2、修改配置后重启,又报错:java.lang.IllegalArgumentException: Type is required

       

        从源码中发现该错误是无法从配置文件中读取到属性:spring.shardingsphere.rules.sharding.sharding-algorithms.one_user_info_inline.type

        但是又能通过以下前置判断条件,说明已经正常读取到配置

        最后发现是因为配置文件中采用了驼峰命名引起的问题(如上图,程序中会自动转化为中划线连接)
PropertyUtil.containPropertyPrefix(environment, prefix)) 能够正确判断驼峰命名的配置
String type = environment.getProperty(key)  不能正确获取到驼峰命名的配置项(key已经转化为中划线连接)

        最后将配置文件全部改为中划线即可解决该问题。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值