建立一個簡單的Interceptor來看看請求的生命週期
preHandle: 進來Controller之前
postHandle:執行完API
afterCompletion:全部完成後
implements HandlerInterceptor
@Slf4j
@Component
public class MessageInterceptor implements HandlerInterceptor {
@Override
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) {
log.info("MessageInterceptor.preHandle():進入API前");
/*
* 應用
* 1.獲取headers裏的author-Cookie
* 2.根據cookie使用userService查找當前user
* 3.存在且激活 當前用戶信息設置到ThreadLocal return true;
* 4.不存在 或 未激活 return false;
*/
return true;
}
@Override
public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler,@Nullable ModelAndView modelAndView) {
log.info("MessageInterceptor.postHandle():API執行完畢");
}
@Override
public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler,@Nullable Exception ex) {
log.info("MessageInterceptor.afterCompletion:執行完畢後");
// destroy
}
}
建立完這個攔截器後需要註冊,這樣啟動後才會去攔截url
addPathPatterns這邊要設定url
implements WebMvcConfigurer
@Configuration
@EnableWebMvc
public class InterceptorWebMvcConfig implements WebMvcConfigurer {
@Autowired
private MessageInterceptor messageInterceptor;
@Override
public void addInterceptors(InterceptorRegistry registry) {
registry.addInterceptor(messageInterceptor).addPathPatterns("/**");
}
}
都完成後就會進行攔截
這不是一個給新手的一個教學過程,也寫的不是很完整
希望大家多多包涵囉~
主要是給自己的一個紀錄,也分享給有需要的夥伴
這是一個心血來潮,產生的文章
若有喜歡或交流的部分都歡迎在下方留言,多多關照。