Spring Boot中的拦截器配置
在Spring Boot中配置拦截器,你需要定义一个实现了WebMvcConfigurer
接口的配置类,并且覆盖其中的addInterceptors
方法,添加你自己定义的拦截器。以下是一个简单的示例:
import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.config.annotation.InterceptorRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
@Configuration
public class WebConfig implements WebMvcConfigurer {
@Override
public void addInterceptors(InterceptorRegistry registry) {
// 添加自定义拦截器并设置拦截规则
registry.addInterceptor(new MyInterceptor())
.addPathPatterns("/**") // 拦截所有路径
.excludePathPatterns("/login", "/error"); // 排除登录和错误处理路径
}
}
class MyInterceptor implements HandlerInterceptor {
@Override
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) {
// 在请求处理之前进行调用(Controller方法调用之前)
return true; // 如果返回false,则停止流程,api不会被调用
}
@Override
public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) {
// 请求处理之后进行调用,但是在视图被渲染之前(Controller方法调用之后)
}
@Override
public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) {
// 在整个请求结束之后调用,也就是在DispatcherServlet渲染了视图执行
}
}
在上述代码中,WebConfig
类实现了WebMvcConfigurer
接口,并在addInterceptors
方法中注册了一个自定义的拦截器MyInterceptor
。这个拦截器会拦截所有路径,但不会拦截/login
和/error
这两个路径。你可以在MyInterceptor
类中实现你的拦截逻辑。
评论已关闭