No WebApplicationContext found: no ContextLoaderListener or DispatcherServlet registered?
一般解答是:web.xml 里有没有 ContextLoaderListener 和 DispatcherServlet
但是如果你只是新建需要依赖注入的类出现这个问题,项目本身之前是正常的,那就是新增的东西有点问题。
例如,我出现上述错误,是因为我项目之前用的是dao层,而不是mapper层,
在其他类执行:
@Resource
private OrderMapper orderMapper;
然而@Resource完全找不到相关实例,如果是springboot,一般是not found bean,而在spring就有点奇怪,报了这个错误。
后面写了一个精确扫描mapper接口的配置类:
import org.mybatis.spring.annotation.MapperScan;
import org.springframework.context.annotation.Configuration;
@Configuration
@MapperScan("com.example.web.order.Mapper") // 这里写你的 Mapper 接口所在包
public class MyBatisConfig {
}
后续,mapper就正常可以用了。
最后
根本原因是Mapper 接口没有被扫描并注册到 Spring 的 IOC 容器中。
如果你web.xml正常,原本项目正常,并且是spring项目,出现这个问题大概率是这个类似情况。
我发现的原因:去掉@Resource或者不用这个类,就正常,添加就出错,就很明显是相关bean没有被创建的情况。
2025.10.15更新:
然而,这些出错的异常根本来源,完全是配置上的问题,但是就是很难调整和配置在spring项目,因为难以置信,因为新增代码也会报这个逆天错误。
后面直接心一横,把这个spring项目升级到springboot2了(springboot3跨度太大会出很多问题),万事大吉,累一点也没啥,最怕就是自己都找不出问题,别人的解决方法也不对,太他喵痛苦了。
2025.10.22更新:
目前大概率怀疑是@Mapper与第三方类似@Mapper功能的插件,互相争夺sqlSessionFactory的问题,因为目前新增的代码,每次出现这个错误,无一例外都是使用了@Mapper。
只有全部mapper或者没有mapper,才会正常。基本确定就是这个问题,确实也不应该存在两个类似的功能。
2026.03.17更新:
在与数据库连接的过程中,如果连接失败也可能出现这个原因,例如连接过程中需要验证的证书出现了问题,导致数据库连接中断/connect time out,但是tomcat可不知道这些,访问的时候tomcat就会弹出这个错误。
2026.05.08更新:
有一个服务层被误删了,然后其他还用@Resource注入的话,会发现相关bean没有在里面,也会报这个错误。
我是直接扒拉tomcat的那个localhost_access_log.2026-05-08.txt 才知道这个问题,有时候不会在idea显示。
似乎与一开始的问题是一致的,都是bean未创建。

1723

被折叠的 条评论
为什么被折叠?



