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

相关文章

线上Java OOM问题定位与解决方案超详细解析

《线上JavaOOM问题定位与解决方案超详细解析》OOM是JVM抛出的错误,表示内存分配失败,:本文主要介绍线上JavaOOM问题定位与解决方案的相关资料,文中通过代码介绍的非常详细,需要的朋... 目录一、OOM问题核心认知1.1 OOM定义与技术定位1.2 OOM常见类型及技术特征二、OOM问题定位工具

C++右移运算符的一个小坑及解决

《C++右移运算符的一个小坑及解决》文章指出右移运算符处理负数时左侧补1导致死循环,与除法行为不同,强调需注意补码机制以正确统计二进制1的个数... 目录我遇到了这么一个www.chinasem.cn函数由此可以看到也很好理解总结我遇到了这么一个函数template<typename T>unsigned

java.sql.SQLTransientConnectionException连接超时异常原因及解决方案

《java.sql.SQLTransientConnectionException连接超时异常原因及解决方案》:本文主要介绍java.sql.SQLTransientConnectionExcep... 目录一、引言二、异常信息分析三、可能的原因3.1 连接池配置不合理3.2 数据库负载过高3.3 连接泄漏

Python中 try / except / else / finally 异常处理方法详解

《Python中try/except/else/finally异常处理方法详解》:本文主要介绍Python中try/except/else/finally异常处理方法的相关资料,涵... 目录1. 基本结构2. 各部分的作用tryexceptelsefinally3. 执行流程总结4. 常见用法(1)多个e

Vue3绑定props默认值问题

《Vue3绑定props默认值问题》使用Vue3的defineProps配合TypeScript的interface定义props类型,并通过withDefaults设置默认值,使组件能安全访问传入的... 目录前言步骤步骤1:使用 defineProps 定义 Props步骤2:设置默认值总结前言使用T

Debian 13升级后网络转发等功能异常怎么办? 并非错误而是管理机制变更

《Debian13升级后网络转发等功能异常怎么办?并非错误而是管理机制变更》很多朋友反馈,更新到Debian13后网络转发等功能异常,这并非BUG而是Debian13Trixie调整... 日前 Debian 13 Trixie 发布后已经有众多网友升级到新版本,只不过升级后发现某些功能存在异常,例如网络转

C#文件复制异常:"未能找到文件"的解决方案与预防措施

《C#文件复制异常:未能找到文件的解决方案与预防措施》在C#开发中,文件操作是基础中的基础,但有时最基础的File.Copy()方法也会抛出令人困惑的异常,当targetFilePath设置为D:2... 目录一个看似简单的文件操作问题问题重现与错误分析错误代码示例错误信息根本原因分析全面解决方案1. 确保

504 Gateway Timeout网关超时的根源及完美解决方法

《504GatewayTimeout网关超时的根源及完美解决方法》在日常开发和运维过程中,504GatewayTimeout错误是常见的网络问题之一,尤其是在使用反向代理(如Nginx)或... 目录引言为什么会出现 504 错误?1. 探索 504 Gateway Timeout 错误的根源 1.1 后端

Web服务器-Nginx-高并发问题

《Web服务器-Nginx-高并发问题》Nginx通过事件驱动、I/O多路复用和异步非阻塞技术高效处理高并发,结合动静分离和限流策略,提升性能与稳定性... 目录前言一、架构1. 原生多进程架构2. 事件驱动模型3. IO多路复用4. 异步非阻塞 I/O5. Nginx高并发配置实战二、动静分离1. 职责2

解决升级JDK报错:module java.base does not“opens java.lang.reflect“to unnamed module问题

《解决升级JDK报错:modulejava.basedoesnot“opensjava.lang.reflect“tounnamedmodule问题》SpringBoot启动错误源于Jav... 目录问题描述原因分析解决方案总结问题描述启动sprintboot时报以下错误原因分析编程异js常是由Ja