Spring Boot 优雅添加 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`到系统。 ######[AI问答 | 693点数解答 | 2025-09-17 11:24:52]
- IntelliJ IDEA 搭建 Spring Boot 项目:从创建到 JPA 实体类及数据源配置全攻略(讯飞星火 | 920点数解答 | 2024-10-31 15:37:22)267
- Spring框架实战:从配置到实现,搞定员工信息查询功能(GPT | 2135点数解答 | 2024-06-12 08:32:35)318
- jQuery 实现动态操作 DOM:打造可增删任务的待办事项列表应用(百度文心 | 1015点数解答 | 2024-10-26 23:41:22)437
- jQuery 打造实用待办事项列表:输入添加、点击删除一步到位!(阿里通义 | 1139点数解答 | 2024-10-29 08:44:48)355
- jQuery 实现动态操作 DOM:打造带添加与删除功能的待办事项列表应用(阿里通义 | 687点数解答 | 2024-10-29 09:25:06)368
- jQuery 实战:打造可添加与删除任务的待办事项列表应用(字节豆包 | 499点数解答 | 2024-10-29 20:40:48)281
- 超详细:使用Java 8创建连接MySQL数据库的Spring Boot项目全步骤( | 1491点数解答 | 2024-05-13 16:25:58)262
- IDEA搭建 Java 8 连接 MySQL 的 Spring Boot 项目全流程:从创建到测试( | 1985点数解答 | 2024-05-13 16:26:16)305
- 深度解析:Vue + Spring Boot 组合的应用优势与发展前景(字节豆包 | 587点数解答 | 2025-04-29 16:25:49)161
- 揭秘Spring Boot + Vue3前后端分离架构:从开发到安全的全方位技术优势(DeepSeek | 2255点数解答 | 2025-05-07 18:15:21)346
- Spring Boot 与 Vue 联手:轻松实现微信扫码登录全攻略(字节豆包 | 207点数解答 | 2025-05-13 09:12:19)172
- 深度剖析:Spring Boot + Vue3 前后端分离架构的全方位技术优势(DeepSeek | 1760点数解答 | 2025-05-24 11:04:00)221