场景

自定义拦截器,通过继承WebMvcConfigureAdapter然后重写父类中的方法进行扩展。


实现

在项目下新建interceptor包

在包下新建MyInterceptor.java

package com.example.demo.interceptor;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.HandlerInterceptor;
import org.springframework.web.servlet.ModelAndView;
import org.springframework.web.servlet.config.annotation.InterceptorRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurerAdapter;
@Configuration//声明这是一个配置
public class MyInterceptor extends WebMvcConfigurerAdapter {

 @Override
 public void addInterceptors(InterceptorRegistry registry) {
  // TODO Auto-generated method stub
  HandlerInterceptor inter = new HandlerInterceptor() {

   @Override
   public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler)
     throws Exception {
    
    System.out.println("自定义拦截器。。。。。。。。。。");
    return true;
   }

   @Override
   public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler,
     ModelAndView modelAndView) throws Exception {
    // TODO Auto-generated method stub
    HandlerInterceptor.super.postHandle(request, response, handler, modelAndView);
   }

   @Override
   public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler,
     Exception ex) throws Exception {
    // TODO Auto-generated method stub
    HandlerInterceptor.super.afterCompletion(request, response, handler, ex);
   }

   
   
  };
  //拦截器的注册
  registry.addInterceptor(inter).addPathPatterns("/**");//拦截所有
 }

}

在项目启动类中添加当前包为扫描包

@SpringBootApplication(scanBasePackages= {"com.example.demo.controller","com.example.demo.service","com.example.demo.interceptor"})

启动项目,访问一个Controller

SpringBoot中自定义拦截器_java