Java配置 等同于以下标题扩展器的内容: -
<!-- 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>
我有一个Spring托管的@Bean,其方法(返回Map)应该注意丰富Message标头。
我知道我也可以使用 spring-integration-dsl ,但截至目前我需要坚持使用Java配置。
例如,这就是我使用Java配置来定义服务激活器的方法: -
@Bean
@ServiceActivator(requiresReply = "false", inputChannel = "lifeCycleRouterChannel")
public InvoiceDelinquencyServiceActivator serviceActivator() {
return new InvoiceDelinquencyServiceActivator();
}
定义Header Enricher的等效方法是什么? 无法找到任何示例/参考。
感谢。
答案 0 :(得分:2)
HeaderEnricher implements Transformer
,所以你可以这样做:
@Bean
@Transformer(inputChannel = "enrichChannel", outputChannel = "processChannel")
public HeaderEnricher headerEnricher() {
HeaderEnricher headerEnricher = new HeaderEnricher (...);
....
return headerEnricher;
}
答案 1 :(得分:0)
我有类似的需求,并且在 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()
}