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

Spring 4.3中@EventListener条件表达式引用参数报错问题

解决Spring 4.3 @EventListener条件表达式报错问题

错误原因

Spring 4.3中,@EventListener的condition表达式根对象是EventExpressionRootObject,它仅暴露名为event的属性来引用事件实例,而非你定义的方法参数名processEvent。直接使用processEvent.getRequestId()会导致SpEL无法找到对应属性,触发报错。

正确配置方式

方式一:直接用event访问事件属性

利用SpEL的属性访问语法(等价于调用getter方法),修改condition表达式:

@EventListener(condition = "event.requestId != null")
@Async
public void handleProcessEvent(ProcessEvent processEvent) {
    // 业务处理逻辑
}

方式二:显式通过#root.event引用事件对象

如果需要更明确的根对象引用,也可以写成:

@EventListener(condition = "#root.event.requestId != null")
@Async
public void handleProcessEvent(ProcessEvent processEvent) {
    // 业务处理逻辑
}

补充说明

从Spring 5.2开始,@EventListener支持直接用方法参数名作为SpEL变量,但Spring 4.3不具备该特性,因此必须通过根对象的event属性访问事件实例。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.20 22:32:35