Failed to instantiate [applets.nature.mapper.LogInfoMapper]: Specified class is an interface-项目启动报错
一、问题由来
周日下午项目在进行测试时,有些东西需要临时修改,自己已经打好一个包部署到测试服务器进行部署。在测试过程中发现一个问题,就是
现在的代码跑起来是没问题的,只是其他人又的东西还没做,所以暂时修改一下代码逻辑,让测试能够顺利进行。自己根据需要立马修改代码,
而且在之前部署过一个版本后,自己也一直修改新的代码,有些需求是刚定下来的。代码修改好之后,使用idea进行clean、编译、打包都没问题,
可是在启动后报了一个错如标题所示。详细的错误信息如下:
Error starting ApplicationContext. To display the conditions report re-run your application with 'debug' enabled.
2021-10-31 15:40:12.035 [] [main] ERROR o.s.boot.SpringApplication[826] - Application run failed
org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'webLogAspect': Unsatisfied dependency expressed through field 'logInfoMapper'; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'logInfoMapper' defined in file [D:\JavaWorkSpace\BigstuffParent\AppletsBackend\target\classes\applets\nature\mapper\LogInfoMapper.class]: Instantiation of bean failed; nested exception is org.springframework.beans.BeanInstantiationException: Failed to instantiate [applets.nature.mapper.LogInfoMapper]: Specified class is an interface
at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor$AutowiredFieldElement.inject(AutowiredAnnotationBeanPostProcessor.java:643)
at org.springframework.beans.factory.annotation.InjectionMetadata.inject(InjectionMetadata.java:130)
at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor.postProcessProperties(AutowiredAnnotationBeanPostProcessor.java:399)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.populateBean(AbstractAutowireCapableBeanFactory.java:1422)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:594)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:517)
at org.springframework.beans.factory.support.AbstractBeanFactory.lambda$doGetBean$0(AbstractBeanFactory.java:323)
at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:222)
at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:321)
at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:202)
at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:879)
at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:878)
at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:550)
at org.springframework.boot.web.servlet.context.ServletWebServerApplicationContext.refresh(ServletWebServerApplicationContext.java:141)
at org.springframework.boot.SpringApplication.refresh(SpringApplication.java:747)
at org.springframework.boot.SpringApplication.refreshContext(SpringApplication.java:397)
at org.springframework.boot.SpringApplication.run(SpringApplication.java:315)
at org.springframework.boot.SpringApplication.run(SpringApplication.java:1226)
at org.springframework.boot.SpringApplication.run(SpringApplication.java:1215)
at applets.AppletsApplication.main(AppletsApplication.java:25)
Caused by: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'logInfoMapper' defined in file [D:\JavaWorkSpace\BigstuffParent\AppletsBackend\target\classes\applets\nature\mapper\LogInfoMapper.class]: Instantiation of bean failed; nested exception is org.springframework.beans.BeanInstantiationException: Failed to instantiate [applets.nature.mapper.LogInfoMapper]: Specified class is an interface
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.instantiateBean(AbstractAutowireCapableBeanFactory.java:1320)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBeanInstance(AbstractAutowireCapableBeanFactory.java:1214)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:557)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:517)
at org.springframework.beans.factory.support.AbstractBeanFactory.lambda$doGetBean$0(AbstractBeanFactory.java:323)
at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:222)
at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:321)
at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:202)
at org.springframework.beans.factory.config.DependencyDescriptor.resolveCandidate(DependencyDescriptor.java:276)
at org.springframework.beans.factory.support.DefaultListableBeanFactory.doResolveDependency(DefaultListableBeanFactory.java:1287)
at org.springframework.beans.factory.support.DefaultListableBeanFactory.resolveDependency(DefaultListableBeanFactory.java:1207)
at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor$AutowiredFieldElement.inject(AutowiredAnnotationBeanPostProcessor.java:640)
... 19 common frames omitted
Caused by: org.springframework.beans.BeanInstantiationException: Failed to instantiate [applets.nature.mapper.LogInfoMapper]: Specified class is an interface
at org.springframework.beans.factory.support.SimpleInstantiationStrategy.instantiate(SimpleInstantiationStrategy.java:70)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.instantiateBean(AbstractAutowireCapableBeanFactory.java:1312)
... 30 common frames omitted
Disconnected from the target VM, address: '127.0.0.1:13616', transport: 'socket'
关键错误信息是 Failed to instantiate [applets.nature.mapper.LogInfoMapper]: Specified class is an interface
翻译过来大致意思就是实例化applets.nature.mapper.LogInfoMapper这个类的时候失败了,指定的这个类applets.nature.mapper.LogInfoMapper是一个接口。
这就让我纳闷了,怎么会出现这种奇奇怪怪的问题呢?虽然还没有正式发布,可是这个项目都已经跑了好几个月了,难道出现神秘BUG了?
二、问题分析
自己把这个问题往搜索引擎里面一扔,立马出现一大堆的结果。比如这篇博文的提供的信息,
根据文中博主遇到的问题来看,是有mapper.java接口文件重名,因此启动的时候才出现这个问题。这给我提供了一个解决问题的思路,会不会我也出
现同样的问题呢,带着这样的问题,我立马开始寻找问题原因。
三、解决方案
找到一个解决问题的方向后,立马开始排查,查看applets.nature.mapper.LogInfoMapper这个接口类是否有重名的。在项目当中进行反复搜索,都没有
发现重名的,只有这一个接口。难道是博主的答案不对嘛?自己的项目中明明只有一个这一个接口啊。这个原因被自己暂时的排除,继续排查原因。
排查方式二:
既然这个接口启动时频繁报错,那我临时把这个接口给注销试一下,看能否启动成功。当我把这个接口给注销后,重新启动发现还会报错,不过不再是
报applets.nature.mapper.LogInfoMapper这个类未实例化,而是报的其他类不能实例化。错误信息如下:
Field userTaskMapper in applets.task.service.impl.UserTaskServiceImpl required a bean of type 'applets.task.mapper.UserTaskMapper' that could not be found.
我就纳闷了,这到底是怎么回事呢?LogInfoMapper这个接口是最先被调用的,放在aop拦截器中用于记录日志。把它注销后,就报其他接口不能正常实例化。
排查方式三:
既然到这一步,我索性把代码备份后,将修改后的代码全部回滚到之前的状态,重新启动项目,启动成功。然后逐步分析,是我加了什么东西还是修改了什么
代码导致的。慢慢地分析我发现,当新添加一个mapper.java接口和xml文件后,导致项目不能正常启动,如下图:

去项目中进行搜索,果然发现有两个同名的mapper接口

我立马将新添加的mapper接口删除,重新启动项目,正常,问题解决。
从这里也学到一点,有时候分析问题不能光看问题本身,需要对问题进行深入的法分析。就像这个BUG,报错的那个接口并没有重复,
而是新添加的接口重复导致所有的mapper接口都不能正常实例化,不能实例化就不能正常注入类,导致后续的一系列问题。如果简单
的看问题,是很难找到问题的真正的原因的,需要看到问题的本质才能够更好的解决问题。
参考博文: https://www.cnblogs.com/yadongliang/p/7739546.html
Failed to instantiate [applets.nature.mapper.LogInfoMapper]: Specified class is an interface-项目启动报错的更多相关文章
- springboot项目启动报错Failed to configure a DataSource: 'url' attribute is not specified and no embedde
springboot项目启动报错Failed to configure a DataSource: 'url' attribute is not specified and no embedde 创建 ...
- SSM项目启动报错:Failed to read candidate component class
SSM项目启动报错:Failed to read candidate component class 换成3.1又没有问题,换成3.2又不行,查看编译环境用的是1.8,将1.8降为1.7,问题解决,服 ...
- vue项目启动报错问题解决. Module build failed: Error: Node Sass does not yet support your current environment
导入vue项目后,启动报错,异常如下: 1 error in ./src/pages/home.vue 2 Module build failed: Error: Node Sass does not ...
- EurekaClient项目启动报错Invocation of destroy method failed on bean with name 'scopedTarget.eurekaClient': org.springframework.beans.factory.BeanCreationNotAllowedException: Error creating bean with name 'e
Disconnected from the target VM, address: '127.0.0.1:51233', transport: 'socket' Eureka Client的使用 使用 ...
- 项目启动报错:Redis health check failed
最近是重新开发整个项目,在上线测试的时候发现这个问题. 项目环境:SpringBoot2.x+Consul+Redission+Maven 报错的信息如下: o.s.b.a.redis.RedisHe ...
- 项目启动报错org.apache.ibatis.binding.BindingException: Invalid bound statement (not found): com.wuhongyu.mapper.OrdersMapper.selectByExample
在用maven配置mybatis环境时出现此BindingExceptiony异常,发现在classes文件下没有mapper配置文件,应该是maven项目没有扫描到mapper包下的xml文件, 在 ...
- springboot项目启动报错 Failed to configure a DataSource: 'url' attribute is not specified and no embedde
参考:https://blog.csdn.net/Coyotess/article/details/80637837
- 【spring boot】mybatis启动报错:Consider defining a bean of type 'com.newhope.interview.dao.UserMapper' in your configuration. 【Mapper类不能被找到】@Mapper 和@MapperScan注解的区别
启动报错: 2018-05-16 17:22:58.161 ERROR 4080 --- Disconnected from the target VM, address: '127.0.0.1:50 ...
- libvirt启动报错Failed to start Virtualization daemon
libvirt启动报错Failed to start Virtualization daemon 1.启动libvirt的具体报错如下 [root@localhost IOS]# service li ...
- Spring boot 启动报错 Failed to auto-configure a DataSource
1.Spring boot 启动报错 Failed to auto-configure a DataSource 参考资料https://blog.csdn.net/liuyinfei_java/ar ...
随机推荐
- 深入浅出Java多线程(二):Java多线程类和接口
引言 大家好,我是你们的老伙计秀才!今天带来的是[深入浅出Java多线程]系列的第二篇内容:Java多线程类和接口.大家觉得有用请点赞,喜欢请关注!秀才在此谢过大家了!!! 在现代计算机系统中,多线程 ...
- 【3】超级详细matplotlib使用教程,手把手教你画图!(多个图、刻度、标签、图例等)
相关文章: 全网最详细超长python学习笔记.14章节知识点很全面十分详细,快速入门,只用看这一篇你就学会了! [1]windows系统如何安装后缀是whl的python库 [2]超级详细Pytho ...
- Qt信号槽原理
1.说明 使用Qt已经好几年了,一直以为自己懂Qt,熟悉Qt,使用起来很是熟练,无论什么项目,都喜欢用Qt编写.但真正去看Qt的源码,去理解Qt的思想也就近两年的事. 本次就着重介绍一下Qt的核心功能 ...
- 【操作系统到计网从入门到深入】(一)Linux基础知识预备
前言 这个专栏其实是博主在复习操作系统和计算机网络时候的笔记,所以如果是博主比较熟悉的知识点,博主可能就直接跳过了,但是所有重要的知识点,在这个专栏里面都会提到!而且我也一定会保证这个专栏知识点的完整 ...
- CF1764H Doremy's Paint 2 题解
题目链接:CF 或者 洛谷 高分题,感觉挺有意思的题,值得一提的是这个题的 \(1\) 和 \(3\) 版本却是两个基础题. 一开始以为跟这道差不多:P8512 [Ynoi Easy Round 20 ...
- 零基础入门Vue之窥探大法——计算与侦听
前言 在 上一小节 我介绍了我学习vue入门 插值语法 的过程. 在本篇,我将记录我对vue的 计算属性和侦听器 的学习记录 注:本篇对于"侦听"和"监听"是一 ...
- [转载自jayant97] 详解Zephyr设备树(DeviceTree)与驱动模型
原文链接:详解Zephyr设备树(DeviceTree)与驱动模型 1. 前言 Nordic最新的开发包NCS(nRF Connect SDK)相对于原来的nRF5 SDK来说,最大的更新莫过于采 ...
- 好书推荐之《JAVA编程思想》
名人推荐 真是一本透着编程思想的书. 上面的书让你从微观角度了解 Java,而这本书则可以让你从一个宏观角度了解 Java. 这本书和 Java 核心技术的厚度差不多,但这本书的信息密度比较大. 所以 ...
- SSD 接口简介——SATA/SAS
SSD盘和主机端通过各种各样的接口互联,这里种类比较多,而且有些既是接口又是协议,有些既是接口又是规范,所以很容易一头雾水,于是这篇文章主要目的是梳理好这些不同的概念,只是梳理并不做深入讲解. 一. ...
- 【framework】ConfigurationContainer简介
1 前言 如图所示,ConfigurationContainer 是 AMS 家族的重要基类:WindowContainer 继承自 ConfigurationContainer,是 WMS 家族 ...