如何使用SPEL引用@GatewayHeader中参数的属性

2024-02-10

这应该是一个简单的问题,但我在网上找不到合适的文档。我想做这个:

@MessagingGateway(name = "redemptionGateway", defaultRequestChannel = Channels.GATEWAY_OUTPUT, defaultHeaders = @GatewayHeader(name = "orderId", expression = "#redemption.orderId"))
public interface RedemptionGateway {
    void create(TrivialRedemption redemption);
}

我显然使用了错误的陈述来引用orderId成员redemption:



org.springframework.expression.spel.SpelEvaluationException: EL1007E:(pos 0): Property or field 'orderId' cannot be found on null
  

OK. Look

@GatewayHeader(name = "orderId", expression = "#redemption.orderId")

此 SpEL 在运行时根据构建的实际参数进行评估MessageHeaders对于目标Message发送。

这就是它的样子:

private StandardEvaluationContext createMethodInvocationEvaluationContext(Object[] arguments) {
    StandardEvaluationContext context = ExpressionUtils.createStandardEvaluationContext(this.beanFactory);
    context.setVariable("args", arguments);

    context.setVariable("gatewayMethod", this.method);
    return context;
}

So, EvaluationContext富含两个变量args and gatewayMethod.

如您所见,没有任何参数按其名称填充。这对所有 JVM 都适用吗?

您可以使用以下参数索引来实现您的目标args:

expression = "#args[0].orderId"
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何使用SPEL引用@GatewayHeader中参数的属性 的相关文章

  • Spring Integration Kafka 与 Spring Kafka

    我们正在尝试在工作者 Spring 应用程序和消费者 Spring 应用程序之间实现消息通道 同一消费者在多个 JVM 上会有副本 使用 Java 配置 Spring 集成的文档有限 我能够找到 Spring Kafka 的文档 我不太确定
  • 带轮询器的 Spring Integration Bridge 无法按 JMS 的预期工作

    使用 spring integration 5 0 7 来限制两个 JMS 队列之间的消息桥接 文档位于 https docs spring io spring integration docs 5 0 7 RELEASE referenc
  • Spring Batch ChunkRequest 抛出 stackOverflow

    我正在挣扎Spring Batch 远程分块使用较新版本的 Spring boot 首先 我尝试将 ChunkRequest 作为事件发送 这是不可能的 因为它没有公共默认构造函数 作为解决方案 我必须创建自定义序列化器和反序列化器 并在
  • Spring Integration - 当服务激活器组件中发生异常时写入错误队列

    我开始使用 Spring 集成 如果可能的话 我不知道如何解决这种情况 我想自动 捕获 应用程序的服务激活器中可能发生的每个异常 并将此错误发送到专用队列 网关不是一个解决方案 因为我需要一些自定义代码 所以如果我正确理解了原理 我必须使用
  • 评估 Spring 表达式语言 (SpEL) 中的属性

    我们的服务有一个根据属性文件安排的进程 读取属性刷新间隔毫秒 它的值通过以下配置直接注入到 Quartz 触发器中
  • SpEL @ConditionalOnProperty 字符串属性为空或 null

    目前 我在 applications yaml 文件中的 String 属性条件下创建 dataSource bean 时遇到问题 理想情况下 我只想在 application yaml 文件中设置了 url 时才创建 dataSource
  • 在 Grails 中用自己的方法扩展 SpEL?

    我想在 Grails 应用程序中添加自定义 SpELL 方法 就像为普通 Spring Security 应用程序所做的那样这个问题 https stackoverflow com questions 6632982 how to crea
  • Spring Integration 在没有轮询器的情况下监听队列

    我想使用 Spring Integration 实现 HTTP 端点 它监听 http 请求 将请求数据作为消息发送到通道 另一个端点应该监听该通道上的消息并处理它们 听起来很简单 但我想要实现的是 消息应该按顺序处理 应尽快处理消息 如果
  • 带有事务的 SourcePollingChannelAdapter

    我想使用 SourcePollingChannelAdapter 来实现轮询时需要事务传播 以便在发生错误时回滚所有操作 setTransactionSynchronizationFactory 方法没有注释 非常感谢你的帮助 在 XML
  • Spring Integration Kafka 适配器不生成消息

    我已经为此苦苦挣扎好几天了 我在 Spring boot 容器下使用 kafka 的 SI 适配器 我已经在我的机器上配置了zookeeper和kafka 我还创建了控制台生产者和消费者对其进行了测试 一切正常 我设法生成控制台消息并让控制
  • 集群模式下的 Spring 入站集成

    我们正在使用 spring 入站轮询适配器来检查文件并处理它 问题是进程正在集群模式下运行多个节点 我们的测试环境使用两个节点的负载平衡 要求是在一个节点上启动此轮询过程 我们怎样才能在不创建两个 war 文件的情况下实现这一目标 我们不应
  • spring任意消息传递tcp套接字

    我正在使用 spring integration 开发定制的双向 TCP 套接字服务器 服务器将处理请求 响应任务 但我无法向特定的连接 ID 发送任意消息 我也知道也许使用TcpSendingMessageHandler and TcpR
  • 存储过程出站网关空参数处理

    即使有效负载 第二个为空 可选参数 我怎样才能使此代码工作
  • 具有多租户的 Spring Batch

    我们如何定义针对多个租户运行的 Spring 批处理作业 我已经设置为每晚针对一个数据库模式按顺序运行一系列作业 当前所有作业都从某个位置读取文件并插入到数据库 批处理配置非常基本 我在其中定义了数据源 事务管理器并将作业存储库映射到它 我
  • Spring Integration 链流程 - 处理无效网关调用

    我有一个 Spring 集成流程 其中有一个对网关服务的服务激活器调用 该服务的结果无效并且似乎挂起 它不会继续链的其余部分 我是否需要指定其他内容来表明我不希望网关调用返回结果以继续线程执行 我有一个 void 方法声明 Service
  • Spring Batch 集成 Java DSL 和 RunIdIncrementer 不递增

    我有一个 spring boot integration batch 它将在 SFTP 上运行和轮询文件 我希望能够最终使用相同的参数 基本上相同的文件 重新启动作业 可能是因为应用程序已重新启动 或者因为某些原因我们再次收到相同的文件 R
  • rabbitmq 通道因 PRECONDITION_FAILED 关闭 - 快速回复消费者不存在

    当我们从 Spring Boot 服务向rabbitmq 发布消息时 出现以下错误 而且这是间歇性的 我们无法重现这一点 AMQP 连接 123 11 xxx xx 5672 错误 org springframework amqp rabb
  • eclipse sts 4 中没有集成图视图?

    甚至不再有创建 spring bean 配置文件的选项 从 3 9 过渡到 4 的过程中 大量功能消失了 如果是这样的话 似乎他们在 Eclipse 端为 IDE 不可知论牺牲了相当多 Spring Tools 4 不再包含对 Spring
  • 将自定义 SecurityExpressionOperations 中的方法注册为 Spring SpEL 函数

    我有以下实现MethodSecurityExpressionOperations public class CustomMethodSecurityExpressionRoot extends SecurityExpressionRoot
  • Spring集成中运行时可配置的动态路由

    我想构建一个具有多个出站网关的方案 可以在运行时添加这些网关 假设它以 2 个网关开始 但能够在运行时添加第 3 4 个网关 我想要 http outbound gateways 来实现它们的功能 但想在运行时构建它们的实例 问题在于在 s

随机推荐