springboot自定义拦截器
时间: 2023-10-12 21:11:12 浏览: 92
Spring Boot提供了非常方便的方式来定义和注册拦截器。
1. 创建拦截器类
创建一个类并实现`HandlerInterceptor`接口,其中包括以下三个方法:
- `preHandle()`方法:在进入Controller之前执行;
- `postHandle()`方法:在进入Controller之后,在渲染视图之前执行;
- `afterCompletion()`方法:在视图渲染之后执行,一般用于清理资源。
示例代码:
```java
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, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception {
System.out.println("进入拦截器: postHandle");
}
@Override
public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception {
System.out.println("进入拦截器: afterCompletion");
}
}
```
2. 注册拦截器
在Spring Boot中,可以通过`WebMvcConfigurer`接口来注册拦截器。
```java
@Configuration
public class WebConfig implements WebMvcConfigurer {
@Autowired
private MyInterceptor myInterceptor;
@Override
public void addInterceptors(InterceptorRegistry registry) {
registry.addInterceptor(myInterceptor).addPathPatterns("/**");
}
}
```
在`addInterceptors()`方法中,通过`registry.addInterceptor()`方法将拦截器实例添加到拦截器链中,并调用`addPathPatterns()`方法指定需要拦截的请求路径。
在上面的示例中,`addPathPatterns("/**")`表示拦截所有请求。
3. 测试
启动应用程序并访问请求路径,可以在控制台中看到拦截器执行的输出。
自定义拦截器可以用于很多场景,如:日志记录、权限验证、请求限流等。
阅读全文