首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

如何将 dubbo filter 拦截器原理运用到日志拦截器中?

业务背景

我们希望可以在使用日志拦截器时,定义属于自己的拦截器方法。

实现的方式有很多种,我们分别来看一下。

拓展阅读

java 注解结合 spring aop 实现自动输出日志[1]

java 注解结合 spring aop 实现日志traceId唯一标识[2]

java 注解结合 spring aop 自动输出日志新增拦截器与过滤器[3]

如何动态修改 spring aop 切面信息?让自动日志输出框架更好用[4]

如何将 dubbo filter 拦截器原理运用到日志拦截器中?[5]

v1-基本版本

接口

最常见的定义方式,在方法执行前后,异常,finally 提供钩子函数。

工具中统一使用拦截器

自定义实现拦截器

我们想自定义拦截器方法时,只需要实现对应的接口即可。

方法的不足

这种方式可以实现常见的功能,但是依然不够优雅。

我们还是无法非常灵活的定义自己的拦截器实现,就像我们使用 aop 增强,或者 dubbo filter 一样。

感兴趣的小伙伴可以移步学习一下,此处不做展开。

Dubbo-02-dubbo invoke filter 链式调用原理[6]

模拟 dubbo filter

实现 Invoker

类似 dubbo invoke,直接在以前的类中初始化即可。

其中 AutoLogInvoker 只是对方法的执行。

实现拦截器

这是的方法增强就是类似 dubbo filter 链式调用实现的,自定义的时候也会方便很多。

不需要拘泥于方法的执行位置,直接编写我们的增强逻辑即可。

开源地址

为了便于大家学习,项目已开源。

Github: https://github.com/houbb/auto-log

Gitee: https://gitee.com/houbinbin/auto-log

小结

dubbo filter 模式非常的优雅,以前一直只是学习,没有将其应用到自己的项目中。

提供的便利性是非常强大的,值得学习运用。

参考资料

auto-log[7]

References

java 注解结合 spring aop 实现自动输出日志:https://houbb.github.io/2023/08/06/auto-log-01-overview

java 注解结合 spring aop 实现日志traceId唯一标识:https://houbb.github.io/2023/08/06/auto-log-02-trace-id

java 注解结合 spring aop 自动输出日志新增拦截器与过滤器:https://houbb.github.io/2023/08/06/auto-log-03-filter

如何动态修改 spring aop 切面信息?让自动日志输出框架更好用:https://houbb.github.io/2023/08/06/auto-log-04-dynamic-aop

如何将 dubbo filter 拦截器原理运用到日志拦截器中?:https://houbb.github.io/2023/08/06/auto-log-05-dubbo-interceptor

Dubbo-02-dubbo invoke filter 链式调用原理:https://houbb.github.io/2016/09/25/dubbo-02-invoke

auto-log:https://github.com/houbb/auto-log

  • 发表于:
  • 原文链接https://page.om.qq.com/page/OklcGj1MFP7rYYzYssPW2dzg0
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券