项目场景:
最近因为公司业务需要在搭一个新架构,用的springboot3和jdk17,在整合mybatis多数据源的时候报错
(引用的mybatisplus 和 mybatisplusjion的是最新的包-2023-08-26)
Error creating bean with name ‘XXXServiceImpl’: Unsatisfied dependency expressed through field ‘baseMapper’: Error creating bean with name ‘XXXMapper’ defined in file [XXXXMapper.class]: Property ‘sqlSessionFactory’ or ‘sqlSessionTemplate’ are required
问题描述
各模块引入的相关jar包
<dependency><groupId>com.baomidou</groupId><artifactId>dynamic-datasource-spring-boot-starter</artifactId><version>4.1.3</version></dependency><!--mybatis--><dependency><groupId>com.baomidou</groupId><artifactId>mybatis-plus-annotation</artifactId><version>3.5.3.2</version></dependency><dependency><groupId>org.postgresql</groupId><artifactId>postgresql</artifactId><version>42.3.3</version></dependency> <dependency><groupId>com.baomidou</groupId><artifactId>mybatis-plus-extension</artifactId><version>3.5.3.2</version></dependency> <dependency><groupId>com.github.yulichang</groupId><artifactId>mybatis-plus-join-boot-starter</artifactId><type>pom</type><version>1.4.6</version></dependency><dependency><groupId>com.baomidou</groupId><artifactId>mybatis-plus-boot-starter</artifactId><version>3.5.3.2</version></dependency>
1、首先我想到的是不是mapper和service没有扫描到(网上基本都是说这个原因)
结果:不是这个原因
2.是不是版本冲突导致自动注入数据源失败
下载依赖冲突扫描工具对各个模块进行扫描
结果:不是这个原因
3.这时候我想到了是不是我都引入的多数据源jar包有问题–dynamic
放弃了这个想法 之前的项目都是用的这个jar包
4.开始各种百度
https://blog.csdn.net/ZHENFENGSHISAN/article/details/128010240
上问说是mybatis-spring-boot-starter的版本问题 我已经引入了mybatisplus最新版本 所有不是这个问题
有文说启动类问题
https://blog.csdn.net/hsuehgw/article/details/129090720
我尝试了下 不行
因为我是多数据源 又有文章说 把启动类 调整为 @SpringBootApplication 在yml去排除
继续尝试不行
**5.到这里我完全肯定就是jar包问题
sqlSessionFactory为空,我的mybatisplus相关jar包没问题 都是工具官方文档来的 很大可能是dynamic的包
之前没有怀疑是因为直接从其他项目负cv来的
那就开始排查这jar包和jdk版本和springboot版本有没有冲突
<dependency><groupId>com.baomidou</groupId><artifactId>dynamic-datasource-spring-boot-starter</artifactId><version>4.1.3</version></dependency>
dynamic文档
https://www.kancloud.cn/tracy5546/dynamic-datasource/2264611
额 dynamic-datasource 官方 直接把 springboot3 依赖的jar包给变了
调整依赖解决