1. 程式人生 > 程式設計 >Spring Boot攔截器實現步驟及測試例項

Spring Boot攔截器實現步驟及測試例項

第一步,定義攔截器:

package com.zl.interceptor;

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("preHandle");
    return true;
  }

  @Override
  public void postHandle(HttpServletRequest request,Object handler,ModelAndView modelAndView) throws Exception {
    System.out.println("preHandle");
  }

  @Override
  public void afterCompletion(HttpServletRequest request,Exception ex) throws Exception {
    System.out.println("preHandle");
  }
}

控制檯列印三個輸出語句,作為測試。

第二步:配置攔截器

package com.zl.interceptor;

import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.config.annotation.InterceptorRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;

@Configuration
public class WebMVCConfig implements WebMvcConfigurer {
  @Override
  public void addInterceptors(InterceptorRegistry registry) {
    registry.addInterceptor(myInterceptor()).addPathPatterns("/**");
  }
  @Bean
  myInterceptor myInterceptor(){
    return new myInterceptor();
  }
}

將定義的攔截器注入到這個配置方法中,並攔截所有路徑。

第三步:寫個介面測試

package com.zl.interceptor;

import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;

@RestController
public class helloController {
  @GetMapping("/hello")
  public String hello(){
    return "hello";
  }
}

測試結果

Spring Boot攔截器實現步驟及測試例項

定義的攔截器三個方法都執行了。

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