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>