springboot 拦截器配置
时间: 2024-12-29 10:22:50 浏览: 7
### 如何在Spring Boot项目中设置和使用拦截器
#### 创建自定义拦截器类
为了创建一个自定义的拦截器,在Java中可以继承`HandlerInterceptorAdapter`类并重写相应的方法,比如`preHandle()`、`postHandle()`以及`afterCompletion()`. 这些方法分别对应于请求处理前后的不同阶段[^1].
```java
import org.springframework.web.servlet.HandlerInterceptor;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
public class MyCustomInterceptor extends HandlerInterceptorAdapter {
@Override
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler){
// 在这里编写请求到来之前的逻辑
System.out.println("Before handling the request");
return true; // 返回true表示继续流程;false则中断后续操作
}
@Override
public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView){
// 处理完请求但在视图渲染之前的操作
System.out.println("After processing but before rendering view");
}
@Override
public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex){
// 所有的处理完成后执行的动作
System.out.println("Request has been completed");
}
}
```
#### 注册拦截器到应用程序上下文中
为了让上述编写的拦截器生效,还需要将其注册至Spring的应用程序上下文内。这通常是在配置文件(`@Configuration`)中标记的一个类里完成。
```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 {
private final MyCustomInterceptor myCustomInterceptor;
public WebConfig(MyCustomInterceptor myCustomInterceptor) {
this.myCustomInterceptor = myCustomInterceptor;
}
@Override
public void addInterceptors(InterceptorRegistry registry) {
registry.addInterceptor(myCustomInterceptor).addPathPatterns("/api/**"); // 只对/api路径下的接口起作用
}
}
```
这样做的好处是可以精确控制哪些URL模式会被特定的拦截器所影响[^4].
通过这种方式,开发者能够轻松地向自己的Spring Boot应用添加全局或局部的行为逻辑,从而增强系统的灵活性与可维护性.
阅读全文