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