【问题标题】:Spring Integration Expression For Bean References on Application Context应用程序上下文中 Bean 引用的 Spring 集成表达式
【发布时间】:2023-03-17 04:42:01
【问题描述】:

我怀疑是否可以解析 JMS 目标的 bean 引用以配置 JMS 适配器。

我在 Spring 上有几个目的地配置如下:

<jee:jndi-lookup id="BeanID" jndi-name="jms/QUEUE" lazy-init="false"/>

然后我在消息标头上设置一个值,其值如下:

@ServiceActivator
public Message<?> sendToJms(Message<?> messageInput){ 
    String queueName = solveQueueName(refToSolveBeanID); 
    return MessageBuilder.withPayload(messageInput.getPayLoad()).setHeader("beanIdHeaderRef, queueName ).builder();
}

现在我的问题是如何构造表达式来解决 Spring Context 上的 bean 引用以进行以下配置工作。

<int:chain input-channel="jmsChannel">
        <jms:outbound-channel-adapter  
            connection-factory="solicitacaoConnFactory"   destination-expression="headers.beanIdHeaderRef">
        </jms:outbound-channel-adapter>
    </int:chain>

您注意到 JMS 目标是使用 jndi-lookup 配置的 我尝试了一些变化,但都失败了。我认为必须将标头值传递给 BeanFactory,但不知道如何创建表达式,有人知道表达式应该是什么样子吗?

问候。

【问题讨论】:

  • 对不起,代码 sn-p 的一些错别字...代码写在这里...

标签: java spring expression integration


【解决方案1】:

查看您的代码,我认为没有理由从 SpEL 访问 BeanFactory。您可以将您的refToSolveBeanID 解析为目标Destination,然后将该对象直接放置到headers

不过你的 SpEL 还是一样的。

【讨论】:

  • 是的,我做到了并且工作了,事实上 jndi 查找不是必需的,因为destination-expression 无需 JNDI 查找配置即可解决。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-05-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多