spring boot中注册拦截器

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception {
        System.out.println("postHandler");
    }

    @Override
    public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, 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.测试结果

以上是关于spring boot中注册拦截器的主要内容,如果未能解决你的问题,请参考以下文章

Spring boot 中 WebMvcConfigurationSupport 详解

mybatis(spring boot集成mybatis,拦截器实现动态sql)

26. spring boot 拦截器不生效的原因

spring-bootspring-boot项目中,通过thymleaf实现登录功能,这里是一个登录拦截器的参考代码

源码分析Spring boot拦截器执行顺序

spring-boot 拦截器不拦截