要創建一個Spring Boot攔截器,你需要按照以下步驟操作:
HandlerInterceptor
接口的類,該接口包含了三個方法,在請求處理過程中會被調用。這三個方法分別是preHandle()
、postHandle()
和afterCompletion()
。你可以根據需要選擇重寫其中的一個或多個方法。import org.springframework.web.servlet.HandlerInterceptor;
import org.springframework.web.servlet.ModelAndView;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
public class CustomInterceptor implements HandlerInterceptor {
@Override
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
// 在請求處理之前進行調用(Controller方法調用之前)
return true; // 如果返回false,則請求中斷
}
@Override
public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception {
// 請求處理之后進行調用,但是在視圖被渲染之前(Controller方法調用之后)
}
@Override
public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception {
// 在整個請求結束之后被調用,也就是在DispatcherServlet渲染了對應的視圖之后執行(主要是用于進行資源清理工作)
}
}
WebMvcConfigurerAdapter
類,并重寫其中的addInterceptors()
方法,將自定義的攔截器添加進去。或者你也可以使用注解@Configuration
和@EnableWebMvc
,然后通過@Override
注解重寫addInterceptors()
方法。import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.config.annotation.InterceptorRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurerAdapter;
@Configuration
public class WebMvcConfig extends WebMvcConfigurerAdapter {
@Override
public void addInterceptors(InterceptorRegistry registry) {
registry.addInterceptor(new CustomInterceptor()).addPathPatterns("/**");
// 添加自定義攔截器,并設置攔截路徑,這里設置攔截所有請求
}
}
這樣,你就創建了一個簡單的Spring Boot攔截器。當請求進入應用時,攔截器的preHandle()
方法會被調用,然后根據返回值來決定是否中斷請求;在請求處理完成后,攔截器的postHandle()
方法會被調用,在視圖渲染前執行;最后在整個請求結束后,攔截器的afterCompletion()
方法會被調用,進行資源清理。