整合Spring、SpringMVC、Mybatis报错:Caused by: java.lang.IllegalStateException: No ServletContext set

报错

Exception in thread “main” org.springframework.beans.factory.BeanCreationException: Error creating bean with name ‘resourceHandlerMapping’ defined in class path resource [org/springframework/web/servlet/config/annotation/DelegatingWebMvcConfiguration.class]: Bean instantiation via factory method failed; nested exception is org.springframework.beans.BeanInstantiationException: Failed to instantiate [org.springframework.web.servlet.HandlerMapping]: Factory method ‘resourceHandlerMapping’ threw exception; nested exception is java.lang.IllegalStateException: No ServletContext set
at
org.springframework.beans.factory.support.ConstructorResolver.instantiate(ConstructorResolver.java:658)
at org.springframework.beans.factory.support.ConstructorResolver.instantiateUsingFactoryMethod(ConstructorResolver.java:638)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.instantiateUsingFactoryMethod(AbstractAutowireCapableBeanFactory.java:1352)

略…

Caused by: java.lang.IllegalStateException: No ServletContext set

报错解读:

缺少Web环境:ServletContext是Web应用的核心对象,提供Web环境信息。
错误配置:在非Web环境(如普通Java SE应用)中,直接运行依赖Web的配置类会触发此异常。

我的情况:

整合Spring、SpringMVC、Mybatis时(未使用Springboot),随便写了一段程序跑跑测一下数据库操作,然后就报错了:

在这里插入图片描述
 
 
 
在这里插入图片描述

原因:

这样随便写一个类(非Controller、或者Service类)运行,即不是整个项目放Tomcat中启动,而是直接运行一个类
在不引入SpringMVC,只有Spring时是没有问题的,但整合了SpringMVC后就不行了,因为SpringMVC必须跑在Tomcat环境里

解决:

使用MockServletContext模拟Web环境:修改原程序:
在这里插入图片描述
 
测试运行:
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值