its*_*man 0 spring spring-mvc request interceptor spring-boot
我在项目中使用了spring boot和cloud。对于日志记录,我使用拦截器。由于我是拦截器的新手,因此我在使用多个拦截器时遇到困难。就像我可以使用特定的拦截器来执行特定任务吗?例如,当我请求帖子时,会调用 POST 拦截器,当我使用 GET 时,会调用 get 拦截器。我怎样才能为多个拦截器编写代码?
我还没有尝试过任何事情,因为我不明白逻辑
你可以定义所有你想要的HTTP拦截器,每个拦截器都应该实现拦截HTTP请求的逻辑。
@Slf4j
@Component
public class GetRequestInterceptor extends HandlerInterceptorAdapter {
@Override
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
if (request.getMethod().equals(HttpMethod.GET.name())) {
log.info("intercepting GET request {}", request.getRequestURI());
}
return true;
}
}
@Slf4j
@Component
public class PostRequestInterceptor extends HandlerInterceptorAdapter {
@Override
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
if (request.getMethod().equals(HttpMethod.POST.name())) {
log.info("intercepting POST request {}", request.getRequestURI());
}
return true;
}
}
Run Code Online (Sandbox Code Playgroud)
然后你必须在春天注册它们。
@RequiredArgsConstructor
@Configuration
public class WebConfigurer implements WebMvcConfigurer {
private final GetRequestInterceptor getInterceptor;
private final PostRequestInterceptor postRequestInterceptor;
@Override
public void addInterceptors(InterceptorRegistry registry) {
registry.addInterceptor(getInterceptor);
registry.addInterceptor(postRequestInterceptor);
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
6279 次 |
| 最近记录: |