酷代码 AI
菜单
服务商

springboot如何优雅地添加HandlerInterceptor到系统

在Spring Boot里优雅添加`HandlerInterceptor`到系统,可按以下步骤操作。 1. 创建自定义拦截器类 自定义拦截器类要实现`HandlerInterceptor`接口,并重写其方法。下面是示例代码: ```java import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import org.springframework.web.servlet.HandlerInterceptor; import org.springframework.web.servlet.ModelAndView; // 自定义拦截器类 public class CustomInterceptor implements HandlerInterceptor { // 在请求处理之前进行调用(Controller方法调用之前) @Override public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception { // 可以在这里进行权限验证、日志记录等操作 System.out.println("Pre-handle method is calling"); // 返回true表示继续执行,返回false则中断执行 return true; } // 请求处理之后进行调用,但是在视图被渲染之前(Controller方法调用之后) @Override public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception { System.out.println("Post-handle method is calling"); } // 在整个请求结束之后被调用,也就是在DispatcherServlet 渲染了对应的视图之后执行(主要是用于进行资源清理工作) @Override public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception { System.out.println("After-completion method is calling"); } } ``` 2. 配置拦截器 创建一个配置类实现`WebMvcConfigurer`接口,重写`addInterceptors`方法来注册自定义拦截器。示例代码如下: ```java 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", "/register"); } } ``` 在上述代码中,`addPathPatterns`方法用于指定拦截的请求路径,`excludePathPatterns`方法用于排除不需要拦截的请求路径。 3. 测试拦截器 创建一个简单的控制器来测试拦截器是否生效: ```java import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RestController; // 控制器类 @RestController public class TestController { @GetMapping("/test") public String test() { return "Test successful"; } } ``` 启动Spring Boot应用程序,访问`/test`路径,在控制台会看到拦截器方法的输出信息,表明拦截器已经生效。 通过以上步骤,就可以在Spring Boot中优雅地添加`HandlerInterceptor`到系统。 [2025-09-17 11:24:52 | AI问答 | 693点数解答]

相关提问
请收藏新域名:pdcd.cn
发财导航,免费问AI
实用工具查看更多
今日油价 [生活类]
图片互转base64 [开发类]
时间转换器 [开发类]
数独游戏 [娱乐类]
经典推箱子 [娱乐类]
AI摸鱼五子棋 [娱乐类]