No WebApplicationContext found: no ContextLoaderListener or DispatcherServlet registered? (已解决)

No WebApplicationContext found: no ContextLoaderListener or DispatcherServlet registered?

一般解答是:web.xml 里有没有 ContextLoaderListenerDispatcherServlet
但是如果你只是新建需要依赖注入的类出现这个问题,项目本身之前是正常的,那就是新增的东西有点问题。

例如,我出现上述错误,是因为我项目之前用的是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未创建。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值