在Spring Boot中,你可以使用拦截器(Interceptor)来拦截请求并进行一些处理。拦截器通常用于记录日志、进行身份验证、处理异常等。
以下是使用拦截器的步骤:
1. 创建一个拦截器类并实现 `HandlerInterceptor` 接口
该接口有三个方法:
- `preHandle` :在请求处理之前调用,返回一个布尔值。如果返回 `true` ,则继续处理请求;如果返回 `false` ,则请求结束。
- `postHandle` :在请求处理之后调用,但在视图被渲染之前。可以在这里对响应进行修改。
- `afterCompletion` :在视图被渲染之后调用。可以在这里进行资源清理操作。 以下是一个简单的拦截器示例:
public class MyInterceptor implements HandlerInterceptor {
@Override
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
// 在这里编写你的拦截逻辑
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 {
// 在这里进行资源清理操作
}
}
2. 在Spring Boot应用程序的配置类中注册拦截器
可以使用 `WebMvcConfigurer` 接口中的 `addInterceptors` 方法来注册拦截器。以下是一个示例:
@Configuration
public class WebConfig implements WebMvcConfigurer {
@Override
public void addInterceptors(InterceptorRegistry registry) {
registry.addInterceptor(new MyInterceptor())
.addPathPatterns("/api/**") // 拦截以 "/api" 开头的请求
.order(-1); // 拦截器排序规则
}
}
在上面的示例中,我们创建了一个拦截器实例并将其添加到拦截器注册表中。我们还使用 `addPathPatterns` 方法指定要拦截的URL模式。
我们可以添加多个拦截器,并使用 `order` 方法指定它们的执行顺序,通过配置order()的值,值越小,优先级越高。不配默认是0