本文主要是介绍xstream.mapper和mybatisplus.core.mapper冲突,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
报错信息
[com.baomidou.mybatisplus.core.mapper.Mapper] conflicts with existing, non-compatible bean definition of same name and class [com.thoughtworks.xstream.mapper.Mapper]
问题描述:
由于一些原因,需要将该SpringBoot的程序,注册到指定版本的微服务中
SpringBoot 版本:2.3.10.RELEASE
springCloud 版本:Hoxton.SR10
依赖如下:
<!-- eureka-client -->
<dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
</dependency>
<!-- eureka-client -->
<dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-netflix-eureka-client</artifactId><exclusion><groupId>com.thoughtworks.xstream</groupId><artifactId>xstream</artifactId></exclusion>
</dependency>
发现出现如上错误,尝试将冲突的xstream排除不与mybatisplus冲突,但是无法解决问题,
报错:Error creating bean with name ‘scopedTarget.eurekaClient’ defined in class path resource。
进一步往下查看日志,是因为找不到com.thoughtworks.xstream,因此不能单纯的排除xstream。
备注:如下是正常启动时的日志信息,可以看到eureka(至少这个版本)是需要xstream的,因此不能直接进行排除
接着,只能去看下这个项目原本的mybatis-plus是什么怎么配置的,可以看到,扫包中的配置是匹配com开始,mappe结尾的包目录
@SpringBootConfiguration
@MapperScan(basePackages = {"com.**.mapper"})
@EnableTransactionManagement
public class MybatisConfig{//省略其他配置
}
//com.**.mapper该配置能识别到如下两个
com.thoughtworks.xstream.mapper.Mapper
com.baomidou.mybatisplus.core.mapper.Mapper
知道问题就知道好改了,这里com开头的范围太大了,我们可以修改一下,限定下范围,例如添加完整的根路径
@MapperScan(basePackages = {"com.equp.evaluate.**.mapper"})
至此,问题得以解决
这篇关于xstream.mapper和mybatisplus.core.mapper冲突的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!