aru*_*nky 3 spring spring-integration
我有自定义bean,我在spring集成流程中使用它.它有一个方法,它将hashmap作为参数,并且它的值是动态设置的.我试图从有效负载头字段(iploc)设置值,但我无法实现.我尝试了一些拼写的组合,但它不起作用.有什么指针吗?
<int:transformer id="ws.transformer"
input-channel="ws.transformer.in" output-channel="ws.transformer.out">
<bean class="com.my.Mybean">
<property name="map">
<map>
<entry key="user">
<value>"admin"</value>
</entry>
<entry key="location">
<value>"headers['iploc']"</value>
</entry>
</map>
</property>
</bean>
</int:transformer>
Run Code Online (Sandbox Code Playgroud)
我可以在服务激活器中设置值,但我正在尝试,如果我在SI配置本身实现这一点.
Spring Integration Transformer可以使用整个Message(有效负载和头文件),因此传递头部值没有任何意义,因为变换器已经可以访问所有消息头.
您的变换器bean定义应该只包含这些不是来自Message转换的属性:
<int:transformer id="ws.transformer" input-channel="ws.transformer.in" output-channel="ws.transformer.out">
<bean class="com.my.MyTransformer">
<property name="user" value="admin"/>
</bean>
</int:transformer>
Run Code Online (Sandbox Code Playgroud)
而你的变压器方法:
@Transformer
OutgoingPayload transform(IncomingPayload payload, @Header("iploc") String iplocHeader) {
return doTransform(...);
}
Run Code Online (Sandbox Code Playgroud)
或者只是消费整个消息:
Message<OutgoingPayload> transform(Message<IncomingPayload> message) {
final String ipLocHeaderValue = message.getHeaders.get("iploc", String.class);
return doTransform(...);
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3247 次 |
| 最近记录: |