日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区

您的位置:首頁技術文章
文章詳情頁

SpringBoot 攔截器妙用你真的了解嗎

瀏覽:152日期:2023-02-28 10:31:14
HandlerInterceptor 詳解

HandlerInterceptor 允許定制 handler 處理器執行鏈的工作流接口。我們可以自定義攔截器用于攔截 handlers 處理器(你可以理解為 controller 層的接口),從而可以添加一些共同的重復性的處理行為(例如接口鑒權,接口日志記錄,性能監控等),而不用修改每一個 handler 的實現。

注意,此基于 SpringBoot 2.3.12.RELEASE 版本講解。

HandlerInterceptor 接口只有三個默認空實現方法,在低版本中這三個方法不是默認方法,而是抽象方法。

public interface HandlerInterceptor {default boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {return true;}default void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, @Nullable ModelAndView modelAndView) throws Exception {}default void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, @Nullable Exception ex) throws Exception {}}

這三個方法的執行順序圖如下:

SpringBoot 攔截器妙用你真的了解嗎

preHandle

preHandle 前置處理,攔截一個處理器(handler)的執行,preHandle 方法會在 HandlerMapping 確定一個適當的處理器對象之后,但在 HandlerAdapter 調用處理器之前被調用。可以簡單理解為 controller 接口被調用之前執行。

Intercepter 是鏈式的,就是一個接著一個執行。如果此方法返回 true,則會執行下一個攔截器或者直接執行處理器。如果此方法返回 false 或者拋出異常則終止執行鏈,也不再調用處理器。

注意,此方法如果不返回 true,那么 postHandle 和 afterCompletion 不會被執行。

那這個方法有什么用呢?其實可以做一些接口被調用前的預處理,例如用戶權限校驗。

package com.chenpi;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;import org.springframework.lang.Nullable;import org.springframework.stereotype.Component;import org.springframework.web.method.HandlerMethod;import org.springframework.web.servlet.HandlerInterceptor;/** * @Description 用戶權限驗證攔截 * @Author 陳皮 * @Date 2021/6/27 * @Version 1.0 */@Componentpublic class UserPermissionInterceptor implements HandlerInterceptor { @Override public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) {if (handler instanceof HandlerMethod) { HandlerMethod handlerMethod = (HandlerMethod) handler; // 獲取用戶權限校驗注解 UserAuthenticate userAuthenticate = handlerMethod.getMethod().getAnnotation(UserAuthenticate.class); if (null == userAuthenticate) {userAuthenticate = handlerMethod.getMethod().getDeclaringClass().getAnnotation(UserAuthenticate.class); } if (userAuthenticate != null && userAuthenticate.permission()) {// 驗證用戶信息UserContext userContext = userContextManager.getUserContext(request);if (null == userContext) { return false;} }}return true; }}postHandle

postHandle 后置處理,會在 HandlerAdapter 調用處理器之后,但在 DispatcherServlet 渲染視圖之前被調用。可以在此對 ModelAndView 做一些額外的處理。可以簡單理解為 controller 接口被調用之后執行。

注意,此方法在執行鏈中的執行順序是倒著執行的,即先聲明的攔截器后執行。

afterCompletion

afterCompletion 完成之后,在請求處理完之后被執行,也就是渲染完視圖之后。一般用于做一些資源的清理工作,配合 preHandle 計算接口執行時間等。

注意,和 postHandle 一樣,此方法在執行鏈中的執行順序也是倒著執行的,即先聲明的攔截器后執行。

@Overridepublic void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, @Nullable Exception ex) { // 請求完后,清除當前線程的用戶信息 UserContextHolder.removeUserContext();}注冊攔截器

注意,我們自定義的攔截器要通過 WebMvcConfigurer 的實現類進行注冊,才能生效。

package com.yzj.ehr.common.config;import com.yzj.ehr.common.context.UserContextResolver;import org.springframework.stereotype.Component;import org.springframework.web.method.support.HandlerMethodArgumentResolver;import org.springframework.web.servlet.config.annotation.InterceptorRegistry;import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;import com.yzj.ehr.common.interceptor.UserPermissionInterceptor;/** * @Description 注冊攔截器 * @Author 陳皮 * @Date 2021/6/27 * @Version 1.0 */@Componentpublic class WebAppConfigurer implements WebMvcConfigurer { private UserPermissionInterceptor userPermissionInterceptor; public WebAppConfigurer(final UserPermissionInterceptor userPermissionInterceptor) {this.userPermissionInterceptor = userPermissionInterceptor; } @Override public void addInterceptors(InterceptorRegistry registry) {// 匹配所有接口,排除/base/test接口registry.addInterceptor(userPermissionInterceptor).addPathPatterns('/**').excludePathPatterns('/base/test'); }}

到此這篇關于SpringBoot 攔截器妙用你真的了解嗎的文章就介紹到這了,更多相關SpringBoot 攔截器內容請搜索好吧啦網以前的文章或繼續瀏覽下面的相關文章希望大家以后多多支持好吧啦網!

標簽: Spring
相關文章:
日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区
国产精品mm| 国产精品一区二区三区美女| 91精品麻豆| 97成人超碰| 欧美欧美黄在线二区| 日本不卡在线视频| 国产视频一区欧美| 中日韩男男gay无套| 午夜在线视频一区二区区别| 夜久久久久久| 久久国产99| 日韩va亚洲va欧美va久久| 蜜桃91丨九色丨蝌蚪91桃色| 婷婷成人av| 久久精品国产亚洲aⅴ| 午夜av不卡| 99亚洲精品| 欧美亚洲三级| 97精品一区二区| 99国产精品| 欧美在线观看天堂一区二区三区| 欧美一区精品| av在线最新| 亚洲丝袜啪啪| 欧美激情麻豆| 婷婷久久一区| 久久丁香四色| 亚洲综合电影一区二区三区| 久久wwww| 亚洲在线电影| 鲁鲁在线中文| 日韩精品高清不卡| 香蕉成人av| 国产精一区二区| 9色国产精品| 激情黄产视频在线免费观看| 国产亚洲欧洲| 色在线视频观看| 欧美视频一区| 免费欧美在线视频| 亚洲成人av观看| 国产一区国产二区国产三区| 日韩三级久久| 99在线观看免费视频精品观看| 精品视频亚洲| 日韩三级一区| 国产精品丝袜xxxxxxx| 91亚洲自偷观看高清| 国产精品尤物| 91九色综合| 日日夜夜免费精品| 亚洲精品va| 999精品在线| 欧美日韩视频免费观看| 久久久久久夜| 国产精品精品国产一区二区| 国产精品扒开腿做爽爽爽软件| 日本亚洲欧美天堂免费| 午夜一级久久| 9色精品在线| 中文久久精品| 三级一区在线视频先锋| 亚洲毛片一区| 国产日韩三级| 国产日韩三级| 国产福利资源一区| 国产精品115| 国产精品白丝一区二区三区| 六月丁香综合在线视频| 精品国产18久久久久久二百| 麻豆一区在线| 久久久久久色 | 欧美女激情福利| 五月天久久777| 欧美日韩一视频区二区| 欧美黑人做爰爽爽爽| 美女福利一区二区三区| 99国产精品私拍| 欧美午夜三级| 国产成人精品999在线观看| 97精品国产福利一区二区三区| 激情亚洲影院在线观看| 亚洲免费中文| 麻豆精品一区二区综合av| 成人羞羞在线观看网站| 免费成人在线视频观看| 嫩呦国产一区二区三区av| 日本美女一区| 婷婷成人av| 天堂а√在线最新版中文在线| 久久av在线| 精品久久久亚洲| 亚洲欧美网站| 精品久久一区| 日本欧洲一区二区| 国产精品成人国产| av不卡在线| 成人午夜网址| 日韩一区二区三区免费视频| а√天堂8资源在线| 亚洲精品看片| 欧美福利在线| 福利一区在线| 日韩福利视频网| 欧美搞黄网站| 91亚洲一区| 国产视频一区二| 中文字幕中文字幕精品| 91精品国产调教在线观看| 国产精品sm| 亚洲三级网址| 久久高清国产| 美女亚洲一区| 亚洲四虎影院| 免费高潮视频95在线观看网站| 日本va欧美va瓶| 日本中文字幕视频一区| 久久香蕉精品| 国产亚洲在线| 国产视频一区免费看| 婷婷成人综合| 日韩精品麻豆| 91精品国产自产在线观看永久∴| 欧美激情福利| 精品欠久久久中文字幕加勒比| 日韩精品一级| 国产亚洲观看| 麻豆精品99| 麻豆国产欧美日韩综合精品二区| 久久国产日韩欧美精品| 欧美亚洲人成在线| 国产另类在线| 国产精品久久久久久久久妇女| 精品国产三区在线| 色婷婷精品视频| 麻豆精品网站| 日韩中文字幕一区二区高清99| 日本在线成人| 精品三级在线| 99久久精品网| 国产婷婷精品| 日本一区二区三区视频在线看| 国产精品极品国产中出| 日韩欧美精品一区| 亚洲婷婷免费| 欧美亚洲三区| 国产传媒在线观看| 久久av在线| 国产成人精品一区二区三区在线| 青青久久av| 日韩毛片网站| 国产欧美一区二区三区精品酒店| 一区在线视频观看| 国产亚洲欧美日韩在线观看一区二区| 精品国产亚洲日本| 免费高潮视频95在线观看网站| japanese国产精品| 婷婷久久免费视频| 性欧美videohd高精| 亚洲不卡视频| 亚洲www免费| 国产欧美一区二区三区国产幕精品| 日韩伦理福利| 91免费精品国偷自产在线在线| 日韩一区电影| 久久狠狠久久| 免费日本视频一区| 国产精品字幕| 欧美激情在线精品一区二区三区| 亚洲婷婷免费| 国产福利资源一区| 久久高清国产| 99视频精品视频高清免费| 久久中文欧美| 青草久久视频| 中日韩男男gay无套| 激情自拍一区| 午夜av成人| 国产福利片在线观看| 国产伦精品一区二区三区千人斩 | 国产一区二区三区精品在线观看| 蜜臀av国产精品久久久久| 韩国三级一区| 亚洲女同av| 福利精品一区| 国产精品视频一区二区三区综合| 亚洲中字黄色| 久久不射网站| 一区二区电影在线观看| 伊人影院久久| 香蕉国产精品| 99国产精品| 久久福利影视| 亚洲狼人精品一区二区三区| 久久精品播放| 亚洲福利久久| 黄色亚洲在线| 久久午夜精品| 日韩和欧美一区二区三区| 日本不卡的三区四区五区|