spring boot 註冊攔截器過程詳解
阿新 • • 發佈:2020-01-07
攔截器是動態攔截Action呼叫的物件。它提供了一種機制可以使開發者可以定義在一個action執行的前後執行的程式碼,也可以在一個action執行前阻止其執行,同時也提供了一種可以提取action中可重用部分的方式。在AOP(Aspect-Oriented Programming)中攔截器用於在某個方法或欄位被訪問之前,進行攔截然後在之前或之後加入某些操作。
如何在spring boot中新增攔截器?
1.首先自己實現一個攔截器
import org.springframework.web.servlet.HandlerInterceptor; import org.springframework.web.servlet.ModelAndView; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; public class MyInterceptor implements HandlerInterceptor{ @Override public boolean preHandle(HttpServletRequest request,HttpServletResponse response,Object handler) throws Exception { System.out.println("preHandler"); return true;//這裡一定要返回true要不然後面的不會執行 } @Override public void postHandle(HttpServletRequest request,Object handler,ModelAndView modelAndView) throws Exception { System.out.println("postHandler"); } @Override public void afterCompletion(HttpServletRequest request,Exception ex) throws Exception { System.out.println("afterHandler"); } }
2.實現WebMvcConfigurer介面並重寫addInterceptors方法
@Configuration public class WebMvcConfig implements WebMvcConfigurer { @Override public void addInterceptors(InterceptorRegistry registry) { registry.addInterceptor(myInterceptor()).addPathPatterns("/**");//將自己的攔截器註冊到spring中並新增攔截的路徑 } @Bean MyInterceptor myInterceptor(){ return new MyInterceptor();//提供自己的攔截器的bean } }
3.建立controller進行測試
@RestController public class HelloController { @GetMapping("gethello") public String getHello(){ System.out.println("get hello"); return "get hello"; } }
4.測試結果
以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支援我們。