0
点赞
收藏
分享

微信扫一扫

不能在主机和虚拟机之间拷贝文本(虚拟机ubuntu16.04)

青青子衿谈育儿 04-08 13:30 阅读 1

Spring Interceptor的执行顺序是按照它们在Spring配置文件中注册的顺序来的。具体来说:

  1. 当一个请求到来时,Interceptor的preHandle方法会按照注册的顺序依次被执行。如果所有Interceptor的preHandle方法都返回了true,则请求会继续被处理;如果其中有任何一个Interceptor的preHandle方法返回了false,则请求处理立即终止,后续的Interceptor以及实际的请求处理方法都不会被执行。

  2. 请求处理完毕后,Interceptor的postHandleafterCompletion方法将会被执行,但这两个方法的执行顺序是与注册顺序恰恰相反的。也就是说,先注册的Interceptor的这两个方法会后执行,后注册的Interceptor的这两个方法会先执行。

这种设计允许我们在Interceptor中实现一些类似于前置检查和后置处理的功能,同时也需要我们注意控制Interceptor的注册顺序以保证其正确执行。

以下是注册多个Interceptor的一个例子:

@Configuration
@EnableWebMvc
public class AppConfig implements WebMvcConfigurer {

  @Autowired
  FirstInterceptor firstInterceptor;

  @Autowired
  SecondInterceptor secondInterceptor;

  @Override
  public void addInterceptors(InterceptorRegistry registry) {
    registry.addInterceptor(firstInterceptor).addPathPatterns("/api/*");
    registry.addInterceptor(secondInterceptor).addPathPatterns("/api/*");
  }
}

在这个例子中,FirstInterceptor中的preHandle方法会在SecondInterceptor之前执行,而postHandle方法和afterCompletion方法则在SecondInterceptor之后执行。

举报

相关推荐

0 条评论