出现这个报错。大概率就是你的版本冲突了,依赖冲突了
说明我遇到问题的环境
springcloudalibaba + springboot + mybatis 的项目
springboot的版本为 2.3.2.RELEASE
springcloudalibaba版本 2.2.6.RELEASE
springcloud版本 Hoxton.SR9
不能更改本版的,因为和springcloualibaba 版本对应
我为什么出现这个问题?
在整合 mybaits的时候,需要使用到依赖
<dependency>
<groupId>org.mybatis.spring.boot</groupId>
<artifactId>mybatis-spring-boot-starter</artifactId>
<version>2.2.0</version>
</dependency>
就是这个依赖出现了问题
相信有maven基础的都会想到进行排除掉这个依赖,我也这么做了,但是依旧无效,依然会报错
Error creating bean with name 'namedParameterJdbcTemplate' defined in class path resource
发现排除也无法解决这个问题,我就尝试着,我能不能找到 一个mybatis启动依赖中依赖springboot项和我项目的springboot项目版本一致的 版本,这样就可能可以避免冲突
在下了多个版本进行查看,找到版本最接近的mybaits启动项依赖,2.1.3 中的springboot版本为2.3.0 和 我的 2.3.2 相差不大。然后我就开始尝试着运行
执行成功
而且版本还是在 springboot 2.3.2
在多次尝试后还是有时候,会出现springboot版本回到 2.3.0 ! 因为我没有进行排除掉mybaits启动依赖的springboot依赖
进行排除!
<dependency>
<groupId>org.mybatis.spring.boot</groupId>
<artifactId>mybatis-spring-boot-starter</artifactId>
<version>2.1.3</version>
<exclusions>
<exclusion>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter</artifactId>
</exclusion>
</exclusions>
</dependency>
这样版本一直保持在2.3.2 了
总结
为什么在mybatis高版本中,进行了排除springboot的启动项,还是会出现报错,不能恢复,我个人的理解是,在mybaits启动项中有严格的版本依赖规则,如果版本对应相差太大,就会出现,项目中的springboot依赖版本和mybatis中其他依赖的关系,不能达到互补的操作,但是我将 项目中springboot版本的依赖和mybaits依赖中springboot依赖的版本,调到了相近的情况了,就可能完成了互补,所以就报错了