首页 > 解决方案 > 带有 exceptionExpression 的 @Retryable 不设置任何 #root 对象也不设置变量

问题描述

我在@RetryableSpringBatch 的库依赖项中使用带有注释的 Spring Retry 1.2.4。

exceptionExpression属性中,我指定了一个自定义异常的表达式#root.status.is5xxServerError(),我在属性中提到了该类include

但这会导致错误并显示以下消息:

org.springframework.retry.RetryException:处理时恢复器中不可跳过的异常;嵌套异常是 org.springframework.expression.spel.SpelEvaluationException: EL1001E: 类型转换问题,无法从 java.lang.String 转换为 java.lang.Boolean

我觉得奇怪的是批处理faultTolerant配置似乎与库配置冲突,如果我在最终消息中查看“处理时恢复器中不可跳过的异常”。

此外,在 SpEL 表达式评估中进行调试时,我注意到没有根对象,也没有在 EvaluationContext 中设置任何变量,尽管它正在尝试解析#root.status.is5xxServerError()。也许它与上面的观察有关。

感谢帮助

标签: javaspring-batchspring-retry

解决方案


这些注释中的表达式支持非常基础。

我最近打开了一个GitHub 问题以添加改进(运行时评估等)。


推荐阅读