public class DynamicProxyTest implements InvocationHandler {
// ... 省略其他代码 ...
@Override
public Object invoke(Object proxy, Method method, Object[] args) throws Throwable {
int times = 0;
while (times < MAX_TIMES) {
try {
return method.invoke(subject, args); // 调用真实对象的方法
} catch (Exception e) {
times++;
System.out.println("重试次数" + times);
if (times >= MAX_TIMES) {
throw new RuntimeException(e); // 达到最大重试次数后抛出异常
}
}
}
return null; // 理论上不会执行到这里,除非在循环中有其他退出条件
}
}
// 使用方式:
@Test
public Integer V2Retry(int code) {
RetryableTestServiceImpl realService = new RetryableTestServiceImpl();
RetryableTestServiceImpl proxyService = (RetryableTestServiceImpl) DynamicProxyTest.getProxy(realService);
proxyService.retryableTest(code); // 调用该方法时会自动进行重试
}
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。