Springboot 拦截器(HandlerInterceptor)
Spring Boot中的拦截器(HandlerInterceptor)可以用于在控制器方法执行前后进行一些操作,比如权限校验、日志记录、参数校验等。
以下是一个简单的Spring Boot拦截器的示例:
- 创建一个拦截器类实现
HandlerInterceptor
接口:
import org.springframework.web.servlet.HandlerInterceptor;
import org.springframework.web.servlet.ModelAndView;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
public class CustomInterceptor implements HandlerInterceptor {
@Override
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
// 在请求处理之前进行调用(Controller方法调用之前)
System.out.println("Pre Handle");
return true; // 如果返回false,则停止流程,api不会被调用
}
@Override
public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception {
// 请求处理之后进行调用,但是在视图被渲染之前(Controller方法调用之后)
System.out.println("Post Handle");
}
@Override
public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception {
// 在整个请求结束之后调用,也就是在DispatcherServlet渲染了视图执行
System.out.println("After Completion");
}
}
- 注册拦截器。在Spring Boot配置类中添加拦截器:
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 CustomInterceptor())
.addPathPatterns("/**"); // 这里可以配置拦截的路径
//.excludePathPatterns("/login", "/error"); // 这里可以配置不拦截的路径
}
}
在上述配置中,我们创建了一个拦截器CustomInterceptor
并将其应用
评论已关闭