《面试必考》 — AOP

问:在使用springboot中,使用aop自定义注解实现限流功能、或者ip黑名单功能,与使用拦截器或者过滤器的的区别是什么?

答:在Spring Boot中,使用AOP(面向切面编程)、拦截器(Interceptor)或过滤器(Filter)来实现限流功能或IP黑名单功能时,它们的主要区别在于作用范围、配置方式以及执行时机等方面。
使用AOP自定义注解实现限流功能或IP黑名单功能
        作用范围:
                AOP可以作用于Spring管理的Bean的方法上,可以精确到特定的方法或类。
        配置方式:
                通过自定义注解和切面来配置,通常需要编写一个切面类来处理限流逻辑或IP黑名单检查。
        执行时机:
                在目标方法执行前后,可以灵活地定义切入点表达式来决定何时执行。
使用拦截器实现限流功能或IP黑名单功能
        作用范围:
                拦截器作用于控制器方法调用之前,可以针对特定的URL路径进行拦截。
        配置方式:
                需要在Spring MVC配置类中注册拦截器,通过配置addPathPatterns和excludePathPatterns来指定拦截的路径。
        执行时机:
                在控制器方法执行之前,比AOP更早一些,因为它是基于Spring MVC的生命周期。
使用过滤器实现限流功能或IP黑名单功能
        作用范围:
                过滤器作用于整个Web应用,可以拦截所有HTTP请求,包括静态资源。
        配置方式:
                可以通过web.xml或Java配置类的方式进行配置。
        执行时机:
                在任何Servlet容器初始化之后,是最先执行的,比拦截器还要早。
总结
        灵活性:AOP提供了最细粒度的控制,可以针对特定的服务方法进行限流或黑名单检查。
        性能开销:AOP由于其代理机制可能会带来一定的性能开销,尤其是在高并发场景下。
        配置复杂度:拦截器和过滤器相对简单,只需要配置路径即可,而AOP可能需要更多的配置和代码编写工作。
        执行顺序:过滤器 -> 拦截器 -> AOP -> 控制器方法 -> AOP后置通知。
根据实际需求选择合适的技术实现:
如果需要对特定的服务方法进行限流或IP黑名单检查,可以选择AOP。
如果需要对特定的URL路径进行限制,可以选择拦截器。
如果需要全局性的限制,例如所有请求都需要经过限流或黑名单检查,则可以考虑使用过滤器。

参考文章:过滤器(Filter)和拦截器(Interceptor)的区别(微服务必考)-CSDN博客

《AOP实战》— 自定义注解-CSDN博客

  Spring AOP(5种通知类型)_aop通知-CSDN博客

@ControllerAdvice 和 @ExceptionHandler注解处理全局异常-CSDN博客

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值