ShardingSphere和MybatisPlus版本问题
前言
Github:https://github.com/HealerJean
错误来源
我使用的ShardingSphere和MybatisPlus做的分库分表,当版本分表为如下的时候没有任何问题
<!--mybatis-plus-->
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-boot-starter</artifactId>
<version>3.3.1.tmp</version>
</dependency>
<!--sharding jdbc 开始-->
<dependency>
<groupId>org.apache.shardingsphere</groupId>
<artifactId>sharding-jdbc-spring-boot-starter</artifactId>
<version>4.0.0-RC1</version>
</dependency>
但是在我要测试XA事务
的时候,要用到ShardingSphere
版本为4.0.0-RC2
,这个时候启动不论怎么样都是报错,错误信息如下
Invocation of init method failed; nested exception is java.lang.IllegalArgumentException: Property 'sqlSessionFactory' or 'sqlSessionTemplate' are required org.springframework.boot.web.servlet.context.AnnotationConfigServletWebServerApplicationContext.refresh[557]
解决错误
博主上网一顿百度,用尽了全身力气,从下午干到了晚上9点。终于在Github上找到了问题,同时给我很好了找到了一个学习和找错的经验。一有问题先Google,如果关键词很明显再Google上搜不到。那怎么办?
找源头呗,找ShardingSphere
和MybatisPlus
的开源项目,肯定有人去提交bug,或者去问问题。那里才是程序员的天堂。
果然:我看到了 https://github.com/apache/incubator-shardingsphere/issues/2712
原因就在于我使用的Springboot
版本的alibaba.druid
大神给出了两种解决思路,第一种当然是屁话
1.ShardingSphere 4.0.0-RC1 搭配 MyBatis、druid-spring-boot-starter使用。
2.ShardingSphere 4.0.0-RC2 或者RC3 搭配 MyBatis、com.alibaba.druid(非springboot版本)使用。
3.希望引起ShardingSphere注意,修复bug
<!-- 数据源 -->
<!--<dependency>-->
<!--<groupId>com.alibaba</groupId>-->
<!--<artifactId>druid-spring-boot-starter</artifactId>-->
<!--</dependency>-->
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid</artifactId>
<version>1.1.21</version>
</dependency>
<!--mybatis-plus-->
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-boot-starter</artifactId>
</dependency>
<!--sharding jdbc 开始-->
<dependency>
<groupId>org.apache.shardingsphere</groupId>
<artifactId>sharding-jdbc-spring-boot-starter</artifactId>
<version>4.0.0-RC2</version>
</dependency>