【问题标题】:@Retryable with exceptionExpression does not set any #root object neither variables带有 exceptionExpression 的 @Retryable 不设置任何 #root 对象也不设置变量
【发布时间】:2019-11-06 17:31:26
【问题描述】:

我在 SpringBatch 的库依赖项中使用带有 @Retryable 注释的 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()。也许它与上面的观察有关。

感谢您的帮助

【问题讨论】:

    标签: java spring-batch spring-retry


    【解决方案1】:

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

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

    【讨论】:

    • 你确定这是唯一的方法吗?可以举个例子吗?
    • 举个例子?正如我所说,表达式目前只在初始化期间评估一次;您想要的功能需要对框架进行更改。
    • 哈抱歉,误会了...还是谢谢你
    猜你喜欢
    • 2018-03-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-04-19
    • 2022-12-19
    • 2019-05-27
    • 2016-06-08
    • 2020-07-23
    相关资源
    最近更新 更多