Spring集成|使用Java配置的标头Enricher

Spring集成|使用Java配置的标头Enricher,java,spring,spring-integration,Java,Spring,Spring Integration,Java配置相当于以下标题enricher的内容是什么:- <!-- Business Entity Header Enricher --> <int:header-enricher id="businessEntityHeaderEnricherComponent" should-skip-nulls="false" output-channel="notificationPreferencesInputChannel" input-cha

Java配置相当于以下标题enricher的内容是什么:-

<!-- Business Entity Header Enricher -->
<int:header-enricher 
    id="businessEntityHeaderEnricherComponent"
    should-skip-nulls="false" 
    output-channel="notificationPreferencesInputChannel"
    input-channel="newUserCreatedChannel">

    <!-- Tenant -->
    <int:header name="tenant" 
        <!-- !! HEADER ENRICHMENT ID DONE BY SPRING MANAGED BEAN !! -->
        ref="businessEntityPayloadHeaderEnricher"
        method="extractTenant" />       


</int:header-enricher>
定义标题充实器的等效方法是什么? 找不到任何示例/参考


谢谢。

头部变压器
,因此您可以执行以下操作:

@Bean
@Transformer(inputChannel = "enrichChannel", outputChannel = "processChannel")
public HeaderEnricher headerEnricher() {
    HeaderEnricher headerEnricher = new HeaderEnricher (...);
    ....
    return headerEnricher;
}

我也有类似的需求,下面的Groovy代码帮助我使用bean/方法调用添加头

@Bean
public HeaderEnricher authTokenHeaderEnricher() {
    new HeaderEnricher(["AUTH_TOKEN":
                                new MessageProcessingHeaderValueMessageProcessor(
                                        new BeanNameMessageProcessor<Object>('authTokenProvider', 'fetchAuthToken')
                                )
                ]
    )
}

@Bean
IntegrationFlow readyForDispatchFlow() {
    IntegrationFlows
            .from("inputChannel")
            .transform(authTokenHeaderEnricher())
            .channel("outputChannel")
            .get()
}
@Bean
public HeaderEnricher authTokenHeaderEnricher(){
新标题([“授权令牌”:
新MessageProcessingHeaderValueMessageProcessor(
新的BeanNameMessageProcessor('authTokenProvider','fetchAuthToken')
)
]
)
}
@豆子
集成流readyForDispatchFlow(){
集成流
.从(“输入通道”)
.transform(authTokenHeaderInRicher())
.频道(“输出频道”)
.get()
}

示例中的标题丰富bean(BusinessEntityPayLoadHeaderInRicher)是如何出现在图中的。我如何告诉HeaderEnricher在我的bean中使用方法?
HeaderEnricher
具有
setMessageProcessor
,因此您可以从该接口实现包装bean调用,例如,
MethodInvokingMessageProcessor
。但现在我决定回到XML配置,因为Java配置使我的业务代码与Spring集成的类结合在一起——这可能只是我的观点……如果您的设计。。。您可以有几个
@Configuration
类来解耦。例如
expressionevaluationmessageprocessor
For
headerenrich
@Bean
允许您不将集成
@Configuration
与业务组件
@Configuration
绑定。
@Bean
public HeaderEnricher authTokenHeaderEnricher() {
    new HeaderEnricher(["AUTH_TOKEN":
                                new MessageProcessingHeaderValueMessageProcessor(
                                        new BeanNameMessageProcessor<Object>('authTokenProvider', 'fetchAuthToken')
                                )
                ]
    )
}

@Bean
IntegrationFlow readyForDispatchFlow() {
    IntegrationFlows
            .from("inputChannel")
            .transform(authTokenHeaderEnricher())
            .channel("outputChannel")
            .get()
}