【573、@Retryable注解】

202 阅读1分钟

@Retryable 注解是 Spring 提供的一个用来实现循环重试的注解。通过该注解,我们可以在方法执行出现异常时进行自动的重试。

@Retryable 注解可以用于类和方法上,表示该类或方法可以进行重试。它有以下常用属性:

  • value:用来指定需要重试的异常类型,可以指定多个异常类型;
  • maxAttempts:用来指定最大重试次数,默认为 3;
  • backoff:用来指定重试间隔时间的策略,有很多种类型可供选择,例如 @Backoff(delay = 1000) 表示重试间隔为 1 秒。

例如,在使用 @Retryable 注解时,我们可以这样定义一个方法:

@Retryable(value = {SQLException.class}, maxAttempts = 5, backoff = @Backoff(delay = 1000))
public void doSomething() throws SQLException {
    // 执行某些操作,如果出现 SQLException 异常,则会进行重试
}

当该方法执行出现 SQLException 异常时,会进行最多 5 次的重试,每次重试间隔为 1 秒。如果重试 5 次后仍然出现异常,则会抛出异常并结束方法的执行。

需要注意的是,@Retryable 注解只能用于 public 方法上,否则无法生效。同时,该注解只有在使用了 @EnableRetry 注解后才会生效,因为 @EnableRetry 注解是开启 Spring Retry 的注解。