1. Handler cannot is cast to Handlermethod in interceptors
Java.lang.ClassCastException:org.springframework.web.servlet.resource.ResourceHttpRequestHandler cannot is cast to Org.springframework.web.method.HandlerMethod
Public boolean prehandle (HttpServletRequest httpservletrequest, HttpServletResponse httpservletresponse, Object handler ) throws Exception { // error here Handlermethod handlermethod = (Handlermethod) handler; }
The reason is that Spring Boot 2.0 also intercepts static resources, and when the interceptor intercepts the request, but the controller does not have a corresponding request, the request is considered a request to the static resource. At this point the handler is Resourcehttprequesthandler, the above error will be thrown.
Workaround:
1. Interceptor where the request path of the static resource is excluded
Registry.addinterceptor (new myinterceptor ()). Addpathpatterns ("/xx/**") . Excludepathpatterns ("/xx/**");
2. instanceof keywords to judge.
if(Handler instanceof Resourcehttprequesthandler) {logger.info ("---------resourcehttprequesthandler-------"+ handler.tostring () +"------------"); }Else if(Handler instanceof Handlermethod) {logger.info ("--------Handlermethod--------"+ handler.tostring () +"------------"); }
Springboot Error logging