Spring integration 如何在没有';输入通道';?
在我的应用程序中,我希望在多个Spring integration 如何在没有';输入通道';?,spring-integration,Spring Integration,在我的应用程序中,我希望在多个中重复使用相同的消息转换器 在这样的链中,我对不同的端点执行http请求,并且我需要添加相同的基本身份验证头。我只想声明一次添加头的代码,即: <int:header-enricher id="authHeaderAdder"> <int:header expression="'Basic ' + new String(T(java.util.Base64).encoder.encode(('${http.user}' + ':' + '$
中重复使用相同的消息转换器
在这样的链中,我对不同的端点执行http请求,并且我需要添加相同的基本身份验证头。我只想声明一次添加头的代码,即:
<int:header-enricher id="authHeaderAdder">
<int:header expression="'Basic ' + new String(T(java.util.Base64).encoder.encode(('${http.user}' + ':' + '${http.password}').bytes))"
name="Authorization"/>
</int:header-enricher>
问题是我在应用程序启动时出错:
配置问题:顶级终结点元素需要“input channel”属性:“int:header enricher”,id='authHeaderAdder'
我如何在不编写任何java代码和生成
的情况下重复使用authHeaderAdder
?您肯定需要在
上使用输入通道,例如输入通道=“authChannel”
,但在
内部,您可以使用类似
的东西。仅此而已:您正在重用相同的转换器,但是通过Spring与MessageChannel
的集成技巧
这种方法很酷,您可以在authChannel
流中添加更多端点,而不必对使用网关的原始流进行任何更改,即使您将enricher处理程序声明为
,它不能在多个链中重用,因为enricher只有一个outputChannel
。正是出于这个原因,框架禁止在多个位置引用同一个处理程序。
<int:chain input-channel="someHttpChain">
<int:transformer ref="authHeaderAdder"/>
<http:outbound-gateway.../>
<int:transformer ref="someResponseTransformer"/>
</int:chain>