最近有一个小伙伴提了一个issues 指出@Retryable注解在接口上不生效 · Issue #I7VGS8 · aizuda/easy-retry - Gitee.com 首先我们复现issues问题.
1. 新建一个接口并添加@Retryable注解
实现接口并执行一个异常的代码
2. 观察日志是否触发异常
通过观察日志并未触发重试
> 想要知道为什么会出现这个问题就得了解一下啊注解的继承问题?
# 注解的继承问题
JDK 动态代理主要是针对实现了某个接口的类。该方式基于反射的机制实现,会生成一个实现相同接口的代理类,然后通过对方法的充写,实现对代码的增强。
在该方式中接口中的注解无法被实现类继承,AOP 中的切点无法匹配上实现类,所以也就不会为实现类创建代理,所以我们使用的类其实是未被代理的原始类,自然也就不会被增强了。
1. 不存在继承关系 AOP可进行有效拦截(CGLIB动态代理)
2. 存在继承关系 有父类和子类 ,切点注解在父类方法。若子类重写父类的方法将不会被拦截,而未重写的方法可以被AOP拦截。
实现拦截器EasyRetryInterceptor
.从测试结果来看,效果还是很不错了,完美的解决了这个问题
为了便于快速上手EasyRetry特别的录制了视频教程还在持续的录制中有兴趣可以看看。
视频地址:
https://www.easyretry.com/pages/a774e2/
版权声明:
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若内容造成侵权、违法违规、事实不符,请将相关资料发送至xkadmin@xkablog.com进行投诉反馈,一经查实,立即处理!
转载请注明出处,原文链接:https://www.xkablog.com/rfx/48317.html