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

Spring Boot 3.0.1中@KafkaListener的__listener无法被SpEL访问

问题:Spring Boot 3.0.1动态Kafka监听器SpEL无法访问__listener属性

问题描述

在实现可在启动及运行时动态生成的通用Kafka监听器时,将Spring Boot版本从2.7.8升级到3.0.1后,出现SpEL表达式解析异常:执行context.autowireCapableBeanFactory.initializeBean(listener, listener.id)时抛出BeanExpressionException,明确提示__listener属性不存在于BeanExpressionContext中。

项目实现背景

  • 项目中定义了原型作用域的Bean,用于创建GenericKafkaListener实例
  • 核心代码模块:
    • XyzApplication.kt:提供原型Bean的创建逻辑
    • GenericKafkaListener.kt:最初在方法上标注@KafkaListener注解
    • StaticAppContext.kt:实现动态初始化监听器的核心逻辑

环境差异

已对比Spring Boot 2.7.8和3.0.1版本的build.gradle.kts配置,确认核心依赖版本(如spring-kafka)随Spring Boot升级同步变更。

解决方法

通过调整Kafka监听器的注解使用方式,成功解决问题:

  • 将@KafkaListener注解从方法级别迁移至类级别
  • 为消息处理方法添加@KafkaHandler注解,指定该方法为Kafka消息的处理入口

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.30 07:32:43