Camel YAML DSL中Bean相互引用的正确语法咨询
问题解决:Camel YAML DSL中Bean间引用的正确语法
你的核心问题是Bean引用的语法错误,在Camel YAML DSL中,引用已定义的Bean不需要使用双大括号{{}}(这是属性占位符的语法),正确格式是#bean:bean名称。
修正后的完整Bean配置如下:
- beans: - name: mqConnectionFactory type: "#class:com.ibm.mq.jakarta.jms.MQQueueConnectionFactory" properties: hostName: localhost port: 1414 # 数字类型无需加引号 transportType: 1 # 对应WMQ_CM_CLIENT的常量值 channel: CHANNEL queueManager: QM1 - name: userCredsConnectionFactory type: "#class:org.springframework.jms.connection.UserCredentialsConnectionFactoryAdapter" properties: username: username password: password targetConnectionFactory: "#bean:mqConnectionFactory" # 正确的Bean引用语法 - name: wmqCachingConnectionFactory type: "#class:org.springframework.jms.connection.CachingConnectionFactory" properties: sessionCacheSize: 500 # 数字类型无需加引号 reconnectOnException: true # 布尔类型无需加引号 targetConnectionFactory: "#bean:userCredsConnectionFactory" # 正确的Bean引用语法
额外注意事项:
- 属性类型匹配:port、sessionCacheSize是整数类型,reconnectOnException是布尔类型,不需要加引号,加引号会被解析为字符串,可能导致类型转换错误。
- Bean定义顺序:确保被引用的Bean在配置中先定义(比如
mqConnectionFactory要在userCredsConnectionFactory之前),这样Spring容器初始化时能正确找到依赖Bean。 - 常量可读性优化:
transportType: 1对应CommonConstants.WMQ_CM_CLIENT的常量值,也可以直接使用全限定名的常量引用:transportType: "#class:com.ibm.mq.jakarta.jms.CommonConstants.WMQ_CM_CLIENT",提升配置可读性。
内容的提问来源于stack exchange,提问作者Shivam Lal
相关产品推荐
相关产品推荐

