过滤器,拦截器,aop之间差异

一、过滤器,拦截器,aop是什么

1>过滤器

定义:过滤器是Java Servlet 规范中的一部分,用于在请求到达 Servlet 之前或响应离开 Servlet 之后执行某些任务。

作用:过滤器主要用于过滤和转换请求和响应对象的内容。它们可以截获请求和响应,以执行一些预处理和后处理操作。

实现:过滤器是通过实现 javax.servlet.Filter 接口来创建的。在 doFilter 方法中,你可以对请求进行处理,并决定是否将请求传递给下一个过滤器或目标 Servlet。

使用场景: 过滤器常用于处理与 HTTP 请求和响应相关的任务,如字符编码、身份验证、日志记录等。

2>拦截器

定义: 拦截器是一种设计模式,但在Java中,它通常指的是在方法调用前后执行一些操作的机制。

作用: 拦截器主要用于拦截方法调用,允许在方法执行前后添加额外的逻辑。在Java的框架中,比如Spring MVC,拦截器可以用于处理请求前的准备工作和请求后的清理工作。

实现: 拦截器通常通过实现拦截器接口或者继承拦截器类来创建。在拦截器中,你可以定义在方法调用前后需要执行的逻辑。

使用场景: 拦截器常用于处理与方法调用相关的横切关注点,如权限验证、日志记录等。

3>AOP(面向切面编程)

定义: AOP是一种编程范式,允许在程序的不同部分插入代码,以提供横切关注点的模块化和重用。

作用: AOP的主要目标是将横切关注点从业务逻辑中分离出来,以提高代码的模块化和可维护性。它允许你以声明性的方式定义跨越应用程序的关注点,如事务管理、日志记录、性能监控等。

实现: AOP可以通过代理对象、动态代理、字节码增强等方式来实现。它通常涉及定义切面(Aspect),切面包含横切关注点的逻辑。

使用场景: AOP广泛应用于需要跨越多个组件和模块的横切关注点,比如事务管理、安全性、日志记录等。

三者在家族中的关系可以看下下边这张图,可以很直观的看到,如果一个请求过来的时候

        1、先会经过filter链,之后才会到达servlet中;

        2、然后才会到达interceptor拦截器;

        3、通过拦截器后,会被指定的aop拦截到;

        4、最后才会到达服务层;

二、三者区别

过滤器(Filter),拦截器(Interceptor),和面向切面编程(AOP)是在软件开发中用于处理横切关注点的三种不同的技术或概念。

作用范围:

过滤器: 主要用于过滤和转换请求和响应对象。在Java中,Servlet过滤器是一个典型的例子,用于在请求进入Web应用程序和响应离开之前执行某些任务。

拦截器: 主要用于拦截请求的处理过程,在方法调用之前和之后执行一些操作。在Java中,拦截器通常与框架(如Spring MVC)一起使用。

AOP: 面向切面编程是一种更广泛的范式,它允许以声明性的方式定义跨越应用程序的横切关注点。AOP不仅限于请求和响应的处理,它可以应用于任何需要横切关注点的场景。

关注点:

过滤器: 主要关注请求和响应的内容,可以修改它们,过滤或转换它们。

拦截器: 关注于拦截方法调用,通常用于处理请求之前和之后的逻辑。

AOP: 关注于横切关注点,这可能是日志记录、事务管理、性能监控等,与业务逻辑分离。

实现方式:

过滤器: 通常与Servlet规范一起使用,通过实现javax.servlet.Filter接口来创建。

拦截器: 通常与框架(如Spring MVC)一起使用,通过实现拦截器接口或者继承拦截器类来创建。

AOP: 可以通过各种方式实现,例如使用代理对象,动态代理,字节码增强等。

使用场景:

过滤器: 适用于请求和响应的预处理,如字符编码、安全性检查等。

拦截器: 适用于方法调用的前后处理,如日志记录、权限验证等。

AOP: 适用于横切关注点的场景,例如事务管理、日志记录、性能监控等。

灵活性:

过滤器: 相对较为静态,对请求和响应的处理有限。

拦截器: 可以更灵活地处理方法调用,可以中断方法的执行。

AOP: 提供了更高层次的抽象,可以以声明性的方式定义横切关注点。

  • 22
    点赞
  • 23
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
Spring拦截器过滤器AOP是Spring框架中常用的三种技术,用于实现对请求的处理和控制。它们的作用和使用方式有一些不同,我会分别对它们进行简单解释。 1. 过滤器Filter): 过滤器Java Servlet规范提供的一种技术,用于在请求到达Servlet之前或响应返回给客户端之前拦截和处理请求。过滤器可以在Web应用的整个生命周期中起作用,对所有请求都生效。常见的应用场景包括:编码转换、身份认证、日志记录等。 2. 拦截器(Interceptor): 拦截器是Spring框架提供的一种技术,用于在请求到达Handler(Controller方法)之前或响应返回给客户端之前对请求进行拦截和处理。拦截器只在Spring MVC中起作用,用于实现对请求的预处理和后处理。常见的应用场景包括:身份认证、权限控制、日志记录等。 3. AOP(面向切面编程): AOP是一种编程思想,也是Spring框架提供的一种技术。通过AOP,可以将与业务逻辑无关的横切关注点(如日志、事务管理等)从业务逻辑中解耦出来,以模块化的方式进行管理。在Spring中,AOP通常通过动态代理实现,可以在方法执行前、后或抛出异常时进行一些额外的处理。AOP常用于事务管理、日志记录、性能监控等方面。 总结: - 过滤器主要用于在Servlet规范中对请求进行拦截和处理。 - 拦截器主要用于在Spring MVC中对请求进行拦截和处理。 - AOP主要用于将与业务逻辑无关的横切关注点进行解耦和管理。 希望以上解释能对你有所帮助!如果有其他问题,请随时提问。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值