java.lang.ClassCastException: org.springframework.web.servlet.resource.ResourceHttpRequestHandler

画航听雨眠 博主文章分类: SpringBoot springboot 阅读数 161

spring 拦截器请求类型异常:java.lang.ClassCastException: org.springframework.web.servlet.resource.ResourceHttpRequestHandler cannot be cast to org.springframework.web.method.HandlerMethod


报错代码

// 此处报错
HandlerMethod handlerMethod = (HandlerMethod) handler;


报错原因

spring boot 2.0 对静态资源也进行了拦截,当拦截器拦截到请求之后,但 controller 里并没有对应的请求时,该请求会被当成是对静态资源的请求。此时的 handler 就是 ResourceHttpRequestHandler,就会抛出上述错误。


解决方法

方法1:

加上 instanceof 判断

if (handler instanceof  HandlerMethod) {



方法2:

不处理,因为请求的资源不存在