org.springframework.beans.factory.UnsatisfiedDependencyException异常问题的解决

本文主要是介绍org.springframework.beans.factory.UnsatisfiedDependencyException异常问题的解决,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

最近学了IDEA和SpringBoot+MyBatis了,正所谓学以致用,于是用所学的来做项目,单元测试时报了下面的异常:

Caused by: org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'adminController': Unsatisfied dependency expressed through field 'adminService'; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'adminService': Injection of resource dependencies failed; nested exception is org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'adminMapper' defined in file [E:\IDEA Project\shfw\target\classes\com\kvc\shfw\admin\mapper\AdminMapper.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 [org/mybatis/spring/boot/autoconfigure/MybatisAutoConfiguration.class]: Bean instantiation via factory method failed; nested exception is org.springframework.beans.BeanInstantiationException: Failed to instantiate

检查了一遍又一遍,特别是application.properties关于mapper.xml的配置,启动类是否添加Mapper的注解,serviceImpl是否引入了mapper的接口,发现都没问题,于是上网搜索,试了很多种办法,方法大抵也是说要去检查上面的那几项,可是我都检查了N回了,又按照网友给的方案,在pom.xml的<build></build>中加入下面的代码:

 <!-- 添加资源 --><resources><resource><directory>src/main/resources</directory><!-- src/main/resources下的指定资源放行 --><includes><include>**/*.properties</include><include>**/*.yml</include><include>**/*.xml</include></includes><filtering>false</filtering></resource></resources>

结果依然无效,一筹莫展之际,只有把目光转向控制台,从控制台打印的信息入手,此时,下面的代码引起我的注意:

An attempt was made to call a method that does not exist. The attempt was made from the following location:org.mybatis.spring.SqlSessionFactoryBean.buildSqlSessionFactory(SqlSessionFactoryBean.java:426)The following method did not exist:org.apache.ibatis.session.Configuration.setVfsImpl(Ljava/lang/Class;)VThe method's class, org.apache.ibatis.session.Configuration, is available from the following locations:jar:file:/C:/Users/shensh.CREATIVE/.m2/repository/org/mybatis/mybatis/3.2.8/mybatis-3.2.8.jar!/org/apache/ibatis/session/Configuration.classIt was loaded from the following location:file:/C:/Users/shensh.CREATIVE/.m2/repository/org/mybatis/mybatis/3.2.8/mybatis-3.2.8.jarAction:Correct the classpath of your application so that it contains a single, compatible version of org.apache.ibatis.session.Configuration

就是最后一行代码:Correct the classpath of your application so that it contains a single, compatible version of org.apache.ibatis.session.Configuration,把该行代码复制去搜索,有人说是jar冲突,而我的异常有提到mybatis-3.2.8.jar,会不会是mybatis jar冲突了呢,于是打开pom.xml,搜索mybatis,果不其然,有两个地方引入了关于mybatis中,一处是如下:

<dependency><groupId>org.mybatis.spring.boot</groupId><artifactId>mybatis-spring-boot-starter</artifactId><version>${mybatis.spring.boot.starter.version}</version>
</dependency>

另一处是:

<dependency><groupId>org.mybatis</groupId><artifactId>mybatis</artifactId><version>3.2.8</version>
</dependency>

我把后面这个引入去掉,重新启动,终于正常了。

这个问题给我体会是:

1.同样的异常,产生的原因有千奇百样种,不对着根源(控制台打印信息)去找解决方案,人云亦云,用别人的办法解决你的异常,由于异常产生的根源不同,那么这时问题解决不了的。我经常这样,异常产生了,一大堆英文,懒得去看,去翻译,直接复制到网上找解决办法,这点很不好,以后要痛改前非,遇到异常不慌张,不着急,静下心来好好理解下控制台的意思,再有针对性地寻求解决方案,远比遇到异常就像个无头苍蝇似的,到处乱撞,生搬硬套别人的解决办法,要强得多,要更快找到适合的解决办法。

2.mybatis-spring-boot-starter jar已经集成了mybatis的jar包了,不必要单独引入mybatis的jar了。

这篇关于org.springframework.beans.factory.UnsatisfiedDependencyException异常问题的解决的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/443018

相关文章

SQL Server配置管理器无法打开的四种解决方法

《SQLServer配置管理器无法打开的四种解决方法》本文总结了SQLServer配置管理器无法打开的四种解决方法,文中通过图文示例介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的... 目录方法一:桌面图标进入方法二:运行窗口进入检查版本号对照表php方法三:查找文件路径方法四:检查 S

Spring Boot @RestControllerAdvice全局异常处理最佳实践

《SpringBoot@RestControllerAdvice全局异常处理最佳实践》本文详解SpringBoot中通过@RestControllerAdvice实现全局异常处理,强调代码复用、统... 目录前言一、为什么要使用全局异常处理?二、核心注解解析1. @RestControllerAdvice2

怎样通过分析GC日志来定位Java进程的内存问题

《怎样通过分析GC日志来定位Java进程的内存问题》:本文主要介绍怎样通过分析GC日志来定位Java进程的内存问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一、GC 日志基础配置1. 启用详细 GC 日志2. 不同收集器的日志格式二、关键指标与分析维度1.

Java进程异常故障定位及排查过程

《Java进程异常故障定位及排查过程》:本文主要介绍Java进程异常故障定位及排查过程,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一、故障发现与初步判断1. 监控系统告警2. 日志初步分析二、核心排查工具与步骤1. 进程状态检查2. CPU 飙升问题3. 内存

Java 线程安全与 volatile与单例模式问题及解决方案

《Java线程安全与volatile与单例模式问题及解决方案》文章主要讲解线程安全问题的五个成因(调度随机、变量修改、非原子操作、内存可见性、指令重排序)及解决方案,强调使用volatile关键字... 目录什么是线程安全线程安全问题的产生与解决方案线程的调度是随机的多个线程对同一个变量进行修改线程的修改操

Redis出现中文乱码的问题及解决

《Redis出现中文乱码的问题及解决》:本文主要介绍Redis出现中文乱码的问题及解决,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录1. 问题的产生2China编程. 问题的解决redihttp://www.chinasem.cns数据进制问题的解决中文乱码问题解决总结

全面解析MySQL索引长度限制问题与解决方案

《全面解析MySQL索引长度限制问题与解决方案》MySQL对索引长度设限是为了保持高效的数据检索性能,这个限制不是MySQL的缺陷,而是数据库设计中的权衡结果,下面我们就来看看如何解决这一问题吧... 目录引言:为什么会有索引键长度问题?一、问题根源深度解析mysql索引长度限制原理实际场景示例二、五大解决

Springboot如何正确使用AOP问题

《Springboot如何正确使用AOP问题》:本文主要介绍Springboot如何正确使用AOP问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录​一、AOP概念二、切点表达式​execution表达式案例三、AOP通知四、springboot中使用AOP导出

Python中Tensorflow无法调用GPU问题的解决方法

《Python中Tensorflow无法调用GPU问题的解决方法》文章详解如何解决TensorFlow在Windows无法识别GPU的问题,需降级至2.10版本,安装匹配CUDA11.2和cuDNN... 当用以下代码查看GPU数量时,gpuspython返回的是一个空列表,说明tensorflow没有找到

解决未解析的依赖项:‘net.sf.json-lib:json-lib:jar:2.4‘问题

《解决未解析的依赖项:‘net.sf.json-lib:json-lib:jar:2.4‘问题》:本文主要介绍解决未解析的依赖项:‘net.sf.json-lib:json-lib:jar:2.4... 目录未解析的依赖项:‘net.sf.json-lib:json-lib:jar:2.4‘打开pom.XM