You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Spring Boot中@Retryable注解未触发重试,求排查建议

Spring Retry重试逻辑未触发的排查建议
  • 修正方法访问修饰符
    Spring Retry基于Spring AOP实现,而Spring AOP默认仅能代理public方法,private方法无法被AOP拦截,自然不会触发重试逻辑。直接将execute方法的修饰符改为public即可。

  • 校验自定义异常配置

    • 确认customeExcep是合法的异常类(需继承Throwable,通常继承Exception或RuntimeException)。
    • 检查抛出的异常实例确实是customeExcep类型,而非其子类或其他异常;如果是子类异常,需要在@Retryable的value或include属性中明确指定。
  • 验证Spring Bean与AOP代理有效性

    • 确保execute方法所在类被Spring管理(即标注@Component/@Service等注解,且被Spring扫描到)。
    • 避免同一类内部直接调用execute方法,这种内部调用无法被Spring AOP拦截,需通过类自身的代理对象调用,或改用AspectJ编译/加载时织入。
  • 检查@Retryable注解配置细节

    • 确认参数配置逻辑:maxAttempts=5代表包含首次调用共执行5次,实际重试4次;backoff.delay=1是1毫秒间隔,可能因间隔太短导致视觉上无感知,可临时调大至delay=1000验证。
    • 核对注解属性是否写错,比如异常类的全类名是否正确,是否误将value属性写为其他字段。
  • 排查依赖版本兼容性
    检查spring-retry:1.3.4与当前Spring Boot版本是否兼容,不同版本的Spring Boot对spring-retry有对应的依赖版本要求,版本不匹配可能导致AOP拦截失效。

  • 开启调试日志定位问题
    添加日志配置开启Spring Retry和AOP的调试日志:

    logging.level.org.springframework.retry=DEBUG
    logging.level.org.springframework.aop=DEBUG
    

    通过日志可查看AOP代理是否创建、重试逻辑是否被触发,以及异常是否被正确捕获。

内容的提问来源于stack exchange,提问作者Anushka

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.25 22:02:17