SpringBoot整合Mybatis-plus报bean注入错误解决方案(喜欢用mp代码生成器的小伙伴一定要注意!)踩坑避雷

如果我的报错信息和你的不一样,请查看一下目录的最后一个模块:报错信息的其他问题可能性,可能会有你想要的答案!

错误原文如下(关键信息已用红色字体标出):

org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'testDemoController': Injection of resource dependencies failed; nested exception is org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'testDemoServiceImpl': Unsatisfied dependency expressed through field 'baseMapper'; nested exception is org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'testDemoMapper' defined in file [D:\JAVA\项目集\testdemo\target\classes\com\testdemo\demos\mapper\TestDemoMapper.class]: Unsatisfied dependency expressed through bean property 'sqlSessionFactory'; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'sqlSessionFactory' defined in class path resource [com/baomidou/mybatisplus/autoconfigure/MybatisPlusAutoConfiguration.class]: Bean instantiation via factory method failed; nested exception is org.springframework.beans.BeanInstantiationException: Failed to instantiate [org.apache.ibatis.session.SqlSessionFactory]: Factory method 'sqlSessionFactory' threw exception; nested exception is java.lang.NoClassDefFoundError: com/baomidou/mybatisplus/core/handlers/PostInitTableInfoHandler

    问题所在:    

 如红色字体所示,工厂方法“”SQLSessionFactory“”引发异常;嵌套异常为java.lang.NoClassDefFoundError:com/baomidou/mybatisplus/core/handlers/PostInitTableInfoHandler。

        没有找到PostInitTableInfoHandler。一般报这种错误的原因是mp的依赖有冲突。这个时候我们就需要去查看自己的springboot版本是否与mp的版本有兼容冲突。

        注意如果你的springboot版本在3.0以上,那么你的mp的依赖一定要在3.5.2以上

其实不只是springboot的版本可能与mp有冲突,也有可能是其他的一些依赖起的冲突。

就比如我的问题就是依赖冲突问题。在我的项目中用到了mp的代码生成依赖。

而我的mp的版本是

正是因为这两个依赖的版本version不同导致了我的项目报错。

解决方法:

        我们只需要将generator的版本号改成与mp依赖的版本号一致即可。如下图:

报错信息的其他问题可能性

从报错信息的蓝色字体看,初步分析可能会以为是自己的一些注解没加到位。比如:

  1. @Service是否加到了Service的实现类上。
  2. @Mapper是否加到了**mapper的接口上。
  3. 启动类上是否加上了@MapperScan("mapper的路径")注解。
  4. yml或者xml配置中是否标注了mp的扫描包路径,如果没有配置那么spring会默认扫描resources包下的mapper包下的所有xml文件。
  5. 是否存在两个service之间的相互调用,也就是说A调用B,同时B又调用A,这样的情况也会导致报错,只不过报错信息容易分辨,会直接提示你存在循环调用的问题。
  6. 查看你的***mapper.xml文件的namespace是否是正确的,正不正确可以通过按住键盘的crtl键然后将光标放到你的namespace的路径上,如果变色说明路径存在,然后再去查看路径是否正确。

        总之,mp虽然好用,但是一定要注意它的版本兼容性,这些错误真的很难分辨。我的问题困扰了我一整天。还有就是,一定要多看你的报错信息,提取有价值的报错log,一定会从中找到你的错误所在!

        如果我的文章不能解决你的问题,尽可将问题截图放到评论区!

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值