在spring集成中,我们能在网关上创建映射而不创建Transformer类吗

在spring集成中,我们能在网关上创建映射而不创建Transformer类吗,spring,spring-integration,transformer,Spring,Spring Integration,Transformer,在上面的代码中,截取的两个参数来自网关的TestOpeation方法,该网关的回复通道是期望映射。所以我们想把对象类型参数转换成映射 我已经写了一张地图。需求是在spring配置xml本身中创建映射。我不想编写任何转换器类来转换映射 目前,我们已经创建了自定义convertObjectToMap bean,该bean具有transformer方法,该方法需要两个参数,并返回map 我们可以不用java transformer创建映射吗 您需要描述变压器的实际功能以及参数 如果它只是#args[0

在上面的代码中,截取的两个参数来自网关的TestOpeation方法,该网关的回复通道是期望映射。所以我们想把对象类型参数转换成映射

我已经写了一张地图。需求是在spring配置xml本身中创建映射。我不想编写任何转换器类来转换映射

目前,我们已经创建了自定义convertObjectToMap bean,该bean具有transformer方法,该方法需要两个参数,并返回map


我们可以不用java transformer创建映射吗

您需要描述变压器的实际功能以及参数

如果它只是
#args[0]
是键,
#args[1]
是值,并且它是一个只有一个值的映射,那么

<int:gateway id="com_java__TestService" service-interface="com.java.svc.TestService">
    <int:method name="testOperation" payload-expression="@convertObjectToMap.transformer(#args[0],#args[1])"  reply-channel="replyChannel_testOperation" request-channel="requestChannel_testOperation"/>

  </int:gateway>

应该可以工作。

您需要描述变压器的实际功能以及参数

如果它只是
#args[0]
是键,
#args[1]
是值,并且它是一个只有一个值的映射,那么

<int:gateway id="com_java__TestService" service-interface="com.java.svc.TestService">
    <int:method name="testOperation" payload-expression="@convertObjectToMap.transformer(#args[0],#args[1])"  reply-channel="replyChannel_testOperation" request-channel="requestChannel_testOperation"/>

  </int:gateway>

应该行。

在做了一些研发之后,我们找到了上述问题的解决方案。 请找到下面被剪掉的代码

"T(java.util.Collections).singletonMap(#args[0], #args[1])"

此外,我们还增加了一个变压器和丰富的链。 此链将在网关关闭后开始执行

<int:gateway id="com_java__TestService" service-interface="com.java.svc.TestService">
    <int:method name="testOperation" payload-expression="#args[0]"  reply-channel="replyChannel_testOperation" request-channel="requestChannel_testOperation">
 <int:header expression="#args[0]" name="fxlPayload"/>
      <int:header expression="#args[1]" name="fxlHeader"/>
    </int:method>
  </int:gateway>

经过一些研发,我们找到了上述问题的解决方案。 请找到下面被剪掉的代码

"T(java.util.Collections).singletonMap(#args[0], #args[1])"

此外,我们还增加了一个变压器和丰富的链。 此链将在网关关闭后开始执行

<int:gateway id="com_java__TestService" service-interface="com.java.svc.TestService">
    <int:method name="testOperation" payload-expression="#args[0]"  reply-channel="replyChannel_testOperation" request-channel="requestChannel_testOperation">
 <int:header expression="#args[0]" name="fxlPayload"/>
      <int:header expression="#args[1]" name="fxlHeader"/>
    </int:method>
  </int:gateway>


Transformer从testOperation方法中获取两个参数,并将其转换为map。参数的类型是对象类型。我已经应用了您建议的代码,但是当我们运行它时,会出现以下错误org.springframework.expression.spel.SpelEvaluationException:EL1005E:(pos 0):找不到类型“java.utils.Collections”抱歉-typo-
java.util.Collections
。Transformer从testOperation方法获取两个参数,并将其转换为map。参数的类型是对象类型。我已经应用了您建议的代码,但是当我们运行它时,会出现以下错误org.springframework.expression.spel.SpelEvaluationException:EL1005E:(位置0):找不到类型“java.utils.Collections”抱歉-键入-
java.util.Collections