【发布时间】:2021-01-22 09:36:59
【问题描述】:
根据我昨天提出的问题,我发现 ExpressionEvaluatingRequestHandlerAdvice 存在一些问题,因为它没有按我的预期工作。
我尝试了doc example,我的期望是得到两个AdviceMessage:一个说“好是成功的”,另一个说“坏是坏的,有理由......”但是当我运行代码时,我得到了一个 AdviceMessage 和一个 ErrorMessage。
AdviceMessage [payload=good was successful, headers={id=2eb612ea-d3cd-f853-3295-236505a130f3, timestamp=1611307975199}, inputMessage=GenericMessage [payload=good, headers={id=725e89ea-be09-7534-1b29-5c7412a99a79, timestamp=1611307975196}]]
ErrorMessage [payload=org.springframework.integration.handler.advice.ExpressionEvaluatingRequestHandlerAdvice$MessageHandlingExpressionEvaluatingAdviceException: Handler Failed; nested exception is java.lang.IllegalStateException: Could not invoke the method 'public java.lang.Object com.example.demo.EerhaApplication$$Lambda$299/0x00000008401d7040.handle(java.lang.Object,org.springframework.messaging.MessageHeaders)', failedMessage=GenericMessage [payload=bad, headers={id=7639425f-7676-d521-5994-4c74e5b09f4a, timestamp=1611307975200}], headers={id=aaa07286-4bc3-71e5-09fb-6b55a46e0ecf, timestamp=1611307975201}]
显然,总是抛出异常,评估 failureExpression 永远不会得到所需的结果。
我使用的是 Spring Boot 2.4.2,但我也尝试过使用旧版本,但始终具有相同的行为。
我做错了什么?
【问题讨论】:
标签: spring spring-boot spring-integration