问题排查记录:A component required a bean of type ‘java.util.List‘ that could not be found.

文章目录


SpringBoot项目启动时报错A component required a bean of type ‘java.util.List’ that could not be found.,下面记录一下排查思路。


报错信息如下:

在这里插入图片描述

解决的方法其实不难,只是仅凭这个报错信息不好直接定位到问题出在哪里,下面我总结一下找到问题根源的几种方式

方式一

如果报错信息是A component required a bean of type 'Xxx' that could not be found.还好,直接全局搜索Xxx即可找到是哪个Bean没注入成功,但是它显示的是List。一般平常使用注解注入或者构造注入,所以可以尝试搜索代码中可能注入一个List的位置,全局搜索下面的内容:

@Autowired
private List<   // 或者搜public等修饰符
// 或者
@Resource
private List<
// 构造函数注入尝试搜索下面的内容
, List< 
(List<

方式二

如果这种方式没搜到,那只能根据控制台日志来看了。我们可以看到日志中最后出现的类是LoggingFailureAnalysisReporter

在这里插入图片描述

全局搜索这个类,这个类是Spring框架的一个类,翻它的源码可以看到下面的代码。这个不就是控制台打印的内容吗

在这里插入图片描述

从这个方法是从哪里被调用的,最终跟踪到下面的这两处。这里就是SpringApplication的run方法,也就是一般启动类的第一行代码

在这里插入图片描述
所以我尝试把断点打在这两个地方,再运行代码,根据断点的信息,已经足够定位问题出现的位置了

在这里插入图片描述

方式三

这种方式刚才给的控制台日志也已经提示了

在这里插入图片描述

具体怎么做呢?
如果使用的是idea,可以参照下图方式配置,打开Run/Debug Configuration,点击Modify options

在这里插入图片描述
勾上Enable debug output,然后启动项目
在这里插入图片描述

控制台就会打印详细的异常堆栈信息

在这里插入图片描述

另外一种方式:还是看LoggingFailureAnalysisReporter源码

代码中打印异常堆栈的位置如下图所示,使用的apache-commons-logging打日志,所以将这个logger打印的日志级别配置成DEBUG级别,也可以打印详细信息,帮助排查问题

在这里插入图片描述
配置如下:

logging:
  level:
    org.springframework.boot.diagnostics: debug
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值