springboot自定义拦截器
时间: 2023-10-13 15:21:01 浏览: 86
在Spring Boot中自定义拦截器可以用来拦截请求并在请求前或请求后执行一些操作,比如记录日志、鉴权等。下面是一个简单的例子:
1. 创建一个拦截器类,实现HandlerInterceptor接口,并实现其中的三个方法:preHandle、postHandle、afterCompletion。
```
public class MyInterceptor implements HandlerInterceptor {
@Override
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
// 在请求处理之前进行调用(Controller方法调用之前)
return true; // 只有返回true才会继续向下执行,返回false取消当前请求
}
@Override
public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception {
// 请求处理之后进行调用,但是在视图被渲染之前(Controller方法调用之后)
}
@Override
public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception {
// 在整个请求处理完成后进行调用,也就是在DispatcherServlet渲染了对应的视图之后执行(主要用于资源清理工作)
}
}
```
2. 创建一个配置类,注册拦截器。
```
@Configuration
public class InterceptorConfig implements WebMvcConfigurer {
@Autowired
private MyInterceptor myInterceptor;
@Override
public void addInterceptors(InterceptorRegistry registry) {
// 注册拦截器
registry.addInterceptor(myInterceptor)
.addPathPatterns("/api/**") // 拦截的路径
.excludePathPatterns("/api/login"); // 排除的路径
}
}
```
在上面的例子中,我们创建了一个MyInterceptor拦截器类,并实现了其中的三个方法。然后,我们创建了一个InterceptorConfig配置类,并在其中注册了MyInterceptor拦截器,并指定了拦截的路径和排除的路径。这样,所有以/api/开头的请求都会被MyInterceptor拦截器拦截,除了/api/login路径的请求。
以上就是Spring Boot自定义拦截器的简单示例。
阅读全文