zoukankan      html  css  js  c++  java
  • 拦截器、过滤器、@Aspect 区别

    1、需求场景

     之前也有在文章写道 “拦截器过滤器" 的区别,文章链接,在实际开发过程中,我们可能会遇到拦截请求参数的需求,在这我举个场景。
     
    某一个接口的请求参数都是加密的,而请求参中还有一些跟业务无关的数据,需要剔除。

    2、问题产生

     那么怎么能够实现只要和业务有关的数据呢?

     首先,我们想到的是通过拦截器,对加密的数据进行解密,然后把解密后的数据重新放到 request 中,request.setAttribute("数据名", 数据);
     
     其实呢,还可以通过 @Aspect 注解,在方法里通过 @before,@around 和 @after 注解的方式来拦截数据,配置起来比拦截器简单。
     
    疑惑就在这产生了,通过  @Aspect  注解的方式写的跟拦截器有什么区别呢,他到底是不是拦截器呢?

    3、问题总结

     3.1、三者不同

     @Aspect 注解形式是 AOP 的一种实现。AOP 使用的主要是动态代理 。
     
     过滤器使用的主要是反射 。
     
     拦截器使用的主要是回调 。
     

     3.2、示例分析

     前台一个请求过来 ,会先进行过滤器处理,看程序是否受理该请求 。 过滤器放过后 , 程序中的拦截器进行处理 ,处理完后进入 被 AOP 动态代理重新编译过的主要业务类进行处理 。
     
     通过示例去理解三者的不同 ,所以三者不存在所属关系。
     
     博客地址:https://www.cnblogs.com/niceyoo
  • 相关阅读:
    文件权限
    函数指针
    位操作
    宏定义
    GNU gcc常用编译选项
    SHELL编程(六)---------数组和函数
    26.使用中间件的方式包装日志输出
    25.最基本的日志输出方式,内置日志包使用
    24.把熔断器整合到我们的客户端代码中(初步)
    23.熔断器学习,熔断器的三种状态,状态获取
  • 原文地址:https://www.cnblogs.com/niceyoo/p/9527143.html
Copyright © 2011-2022 走看看