在 Spring Boot 中使用拦截器(Interceptor)通常用于在请求处理的前后执行一些逻辑,比如日志记录、权限验证等。以下是使用拦截器的步骤:
1. 创建拦截器类
首先,你需要创建一个实现 HandlerInterceptor
接口的拦截器类。这个接口有三个方法:
preHandle
:在请求处理之前执行。postHandle
:在请求处理之后、视图渲染之前执行。afterCompletion
:在请求完成之后执行,通常用于资源清理。
import org.springframework.stereotype.Component;
import org.springframework.web.servlet.HandlerInterceptor;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
@Component
public class CustomInterceptor implements HandlerInterceptor {
@Override
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
// 在请求处理之前执行
System.out.println("Pre Handle method is Calling");
return true; // 返回 true 继续执行,返回 false 中断请求
}
@Override
public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception {
// 在请求处理之后、视图渲染之前执行
System.out.println("Post Handle method is Calling");
}
@Override
public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception {
// 在请求完成之后执行
System.out.println("After Completion method is Calling");
}
}
2. 注册拦截器
接下来,你需要将拦截器注册到 Spring Boot 的拦截器链中。可以通过实现 WebMvcConfigurer
接口并重写 addInterceptors
方法来完成。
import org.springframework.beans.factory.annotation.Autowired;
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 {
@Autowired
private CustomInterceptor customInterceptor;
@Override
public void addInterceptors(InterceptorRegistry registry) {
registry.addInterceptor(customInterceptor)
.addPathPatterns("/**") // 拦截所有路径
.excludePathPatterns("/public/**"); // 排除特定路径
}
}
3. 配置拦截路径
在 addInterceptors
方法中,你可以通过 addPathPatterns
和 excludePathPatterns
方法来配置拦截器拦截哪些路径以及排除哪些路径。
addPathPatterns("/**")
:表示拦截所有路径。excludePathPatterns("/public/**")
:表示排除/public/
路径下的所有请求。
4. 运行应用
启动 Spring Boot 应用后,拦截器会自动生效。当请求进入时,拦截器会按照配置的路径进行拦截,并执行相应的逻辑。
总结
在 Spring Boot 中使用拦截器的步骤主要包括:
- 创建一个实现
HandlerInterceptor
接口的拦截器类。 - 通过实现
WebMvcConfigurer
接口并重写addInterceptors
方法来注册拦截器。 - 配置拦截器的路径和排除路径。
拦截器非常适合用于处理跨切面的逻辑,如日志记录、权限验证、请求参数处理等。
THE END
暂无评论内容