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
  • 相关阅读:
    UEditor 编辑模板
    Task ProgressBar模拟现实完成后显示TextBox
    Java Lambda map返回部分属性
    Socket编程
    字节流和字符流
    File类
    volatile的作用和原理
    Java四种引用类型
    ThreadLocal
    孤儿进程和僵尸进程
  • 原文地址:https://www.cnblogs.com/niceyoo/p/9527143.html
Copyright © 2011-2022 走看看