1. 程式人生 > 程式設計 >spring boot 註冊攔截器過程詳解

spring boot 註冊攔截器過程詳解

攔截器是動態攔截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.測試結果

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支援我們。