Spring Boot中拦截器的简单使用

心灵之旅 2024-02-24 ⋅ 29 阅读

在Spring Boot中,拦截器是一个非常常用的组件,它可以拦截请求,在请求前后进行处理,从而实现一些通用的功能,例如身份验证、日志记录等。本文将介绍如何在Spring Boot中简单使用拦截器。

1. 创建拦截器类

首先,我们需要创建一个拦截器类,该类需要实现HandlerInterceptor接口。拦截器类的基本结构如下所示:

@Component
public class MyInterceptor implements HandlerInterceptor {

    @Override
    public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
        // 在请求处理之前进行处理,返回true表示继续向下执行,返回false表示中断请求
        return true;
    }

    @Override
    public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception {
        // 在请求处理之后进行处理
    }

    @Override
    public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception {
        // 在请求完成之后进行处理
    }
}

preHandle方法中,我们可以进行一些请求处理之前的操作,例如身份验证。在postHandle方法中,我们可以对请求进行处理之后的操作,例如添加日志记录等。而afterCompletion方法则在请求完成之后进行处理,不论是否发生异常都会执行。

2. 注册拦截器

接下来,我们需要将拦截器注册到Spring Boot中。我们可以通过继承WebMvcConfigurerAdapter类,重写addInterceptors方法实现。

@Configuration
public class WebConfig extends WebMvcConfigurerAdapter {

    @Autowired
    private MyInterceptor myInterceptor;
    
    @Override
    public void addInterceptors(InterceptorRegistry registry) {
        // 注册拦截器
        registry.addInterceptor(myInterceptor)
                .addPathPatterns("/*")  // 对所有请求进行拦截
                .excludePathPatterns("/login");  // 排除/login请求
    }
}

在上述例子中,我们将拦截器类MyInterceptor注册到了Spring Boot的拦截器链中,并指定了对所有请求进行拦截,但是排除了/login请求。

3. 测试拦截器

现在,我们可以测试拦截器的功能了。在请求发起之前和请求完成之后,拦截器将分别执行preHandleafterCompletion方法。

@RestController
public class MyController {

    @GetMapping("/hello")
    public String hello() {
        return "Hello World!";
    }
}

当我们请求/hello接口时,拦截器将会执行对应的方法。

4. 总结

拦截器是Spring Boot中非常常用的组件,能够方便地对请求进行拦截和处理。本文从创建拦截器类、注册拦截器到测试拦截器的整个流程进行了介绍,并提供了一个简单的例子。希望本文对你理解和使用拦截器有所帮助。

参考链接:


全部评论: 0

    我有话说: