Spring 集成 Content Enricher 如何仅使用 Java (JavaConfig) 实现?

How is a Spring integration Content Enricher implemented using Java only (JavaConfig)?

我正在尝试找到最好的 Java 配置方法

org.springframework.integration.transformer.ContentEnricher

它是 Message Transformation 系列的一部分,但没有实现 Transformer(就像 HeaderEnricher 那样),但我发现它仍然有效:

@Bean
@Transformer(inputChannel="requestChannel", outputChannel="replyChannel")
public ContentEnricher contentEnricher() {
    ContentEnricher contentEnricher = new ContentEnricher();
    Map<String, Expression> propertyExpressions = new HashMap<String, Expression>();
    propertyExpressions.put("description", new SpelExpressionParser().parseExpression("'enriching description with static string'"));
    contentEnricher.setPropertyExpressions(propertyExpressions );
    return contentEnricher;
}

这是最好的方法还是有其他更好的选择?

是的,这是正确的配置,它之所以有效,是因为 ContentEnricher 是一个 MessageHandler 实现,具有从 MethodInvokingTransformer.[=21 接受的适当 handleMessage(Message<?> message) 方法=]

另一个你的想法是错误的。 ContentEnricher 不是 Transformation family 的一部分。

正是一些黑匣子从外部系统提取额外数据并将其添加到请求消息中。

在此处查看更多信息:http://www.enterpriseintegrationpatterns.com/DataEnricher.html

因此,@ServiceActivator 更适合 ContentEnricher 的情况。

另外,请关注Spring Integration Java DSL项目。它具有 .enrich() 表示法。