Spring Boot 拦截器中 handler 的几种类型
Spring Boot About 1,274 words描述
之前文章有说到:使用HandlerInterceptor
中提供的Object handler
参数,获取Controller
的方法上的注解,并实现逻辑。
但Object handler
不一定都是HandlerMethod
类型,也有可能是ResourceHttpRequestHandler
。
之前文章
https://www.zhangbj.com/p/1388.html
代码
@Slf4j
public class RateLimiterInterceptor implements HandlerInterceptor {
@Override
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
log.info("request url#{}, method#{}", request.getRequestURI(), request.getMethod());
if (handler instanceof HandlerMethod handlerMethod) {
log.info("this is handlerMethod#{}", handlerMethod);
} else if (handler instanceof ResourceHttpRequestHandler resourceHttpRequestHandler) {
log.info("this is resourceHttpRequestHandler#{}", resourceHttpRequestHandler);
} else {
log.info("this is {}", handler);
}
return HandlerInterceptor.super.preHandle(request, response, handler);
}
}
HandlerMethod
Spring
中提供了HandlerMethod
类,封装了Controller
的方法的相关参数信息,包括:方法名、参数、注解等元信息。
自定义的Controller
、RestController
通过拦截器时Object handler
都会是HandlerMethod
类型。
ResourceHttpRequestHandler
静态资源通过Spring
请求获取时,拦截器中的handler
类型就是ResourceHttpRequestHandler
,而且默认的/error
接口通过拦截器时Object handler
类型也是ResourceHttpRequestHandler
。
Views: 2,117 · Posted: 2023-02-11
————        END        ————
Give me a Star, Thanks:)
https://github.com/fendoudebb/LiteNote扫描下方二维码关注公众号和小程序↓↓↓
Loading...