美文网首页
十六、拦截器实现的细节

十六、拦截器实现的细节

作者: 此间有道 | 来源:发表于2020-03-31 08:29 被阅读0次

1. 拦截器细节

  1. 前置处理按拦截器列表的顺序执行;
  2. 后置处理按拦截器列表的逆序执行;
  3. 后置处理的异常需捕获后统一抛出;

2. 代码示例

public class InterceptorChain {
  private List<IInterceptor> interceptorList = new ArrayList<>();

  public void registerInterceptor(IInterceptor interceptor) {
    interceptorList.add(interceptor);
  } 

  public void beforeHandle(Object obj, Callable task) {
    if (CollectionUtils.isEmpty(interceptorList)) {
      return;
    }
    for (IInterceptor interceptor : interceptorList) {
      interceptor.beforeHandle(obj, task);
    }
  }

  public void afterHandle(Object obj, Callable task) {
    if (CollectionUtils.isEmpty(interceptorList)) {
      return;
    }  
    
    List<Throwable> throwableList = new ArrayList<>;
    for(int i = interceptorList.size(); i > -1; i--) {
      try {
         interceptorList.get(i).afterHandle(obj, task);
      } catch (Throwable throwable) {
          throwableList.add(throwable);
      }
    }
    ExceptionUtils.throwExceptionIfNotEmpty(throwableList);
 }
}

相关文章

  • 十六、拦截器实现的细节

    1. 拦截器细节 前置处理按拦截器列表的顺序执行; 后置处理按拦截器列表的逆序执行; 后置处理的异常需捕获后统一抛...

  • SpringMVC拦截器

    SpringMVC拦截器 拦截器的定义 自定义的拦截器需要实现一个接口HandlerInterceptor,并实现...

  • Spring15-拦截器

    定义拦截器 定义拦截器需要实现HandlerInterceptor 配置拦截器 注意:spring mvc的拦截器...

  • nestjs拦截器

    拦截器是使用@injectable装饰器的类,拦截器应该实现NestInterceptor接口。实现interce...

  • springBoot—拦截器

    1. 拦截器的基本使用 1.1 拦截器的实现类 实现Spring的HandlerInterceptor接口; 继...

  • 拦截器

    一 拦截器 定义拦截器,实现HandlerInterceptor接口 二 springMVC 拦截器配置 1 针对...

  • SpringBoot 2.3 + 自定义拦截器

    1、创建自定义拦截器实现 HandlerInterceptor(拦截器处理器) 2、实现WebMvnConfigu...

  • Kotlin 协程实现原理

    目录 前言先从线程谈起 设计思想CPS 变换续体与续体拦截器状态机标准库 实现细节Main 调度器Default ...

  • SpringMVC拦截器

    SpringMVC拦截器的应用场景: 1.解决乱码问题 2.解决权限验证问题 拦截器的实现 拦截器的实现主要分为3...

  • springboot 配置过滤器和拦截器

    1.配置拦截器 创建拦截器类 实现HandlerInterceptor接口 创建springmvc配置类 实现We...

网友评论

      本文标题:十六、拦截器实现的细节

      本文链接:https://www.haomeiwen.com/subject/unpkuhtx.html