为了账号安全,请及时绑定邮箱和手机立即绑定

Spring-retry @Recover 方法只适用于接口定义

Spring-retry @Recover 方法只适用于接口定义

德玛西亚99 2021-11-11 18:15:09
我正在spring-retry为我的业务逻辑提供重试策略。我有接口和实现它的服务public interface MyInterface {    @Retryable(maxAttempts = 5, backoff = @Backoff(value = 0L))    void doSth() throws Exception;    @Recover    void recoverIfFailed(Exception e);}@Servicepublic class MyService implements MyInterface {    public void doSth() throws Exception {            throw new Exception();    }    public void recoverIfFailed(Exception e) {        System.out.println("Recovered!");    }}在这个配置中一切正常。但是我不明白为什么我不能@Recovery像这样将注释移动到接口实现:@Servicepublic class MyService implements MyInterface {    @Retryable(maxAttempts = 5, backoff = @Backoff(value = 0L)) // -- this is working    public void doSth() throws Exception {            throw new Exception();    }    @Recover // -- this is not working!    public void recoverIfFailed(Exception e) {        System.out.println("Recovered!");    }}我真的不想在界面中公开我的恢复方法(因为它似乎是我的内部逻辑),但由于这个问题我不能。任何人都可以建议什么可能是一个问题?
查看完整描述

1 回答

?
森林海

TA贡献2011条经验 获得超2个赞

我提交了一个开放的拉取请求来解决这个问题

作为解决方法,请使用@EnableRetry(proxyTargetClass = true).


查看完整回答
反对 回复 2021-11-11
  • 1 回答
  • 0 关注
  • 168 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信