将 Spring xml 配置转换为 java

Converting Spring xml config to java

我在 spring 中有一个用于邮件服务的 XML 配置,我想将其转换为 JAVA 配置。

XML 看起来像这样

<int:chain id="chain"
           input-channel="outMailError"
    output-channel="outMailEntry">
    <int:poller max-messages-per-poll="1" fixed-rate="20000" />
    <int:transformer ref="mailSendErrorTransformer" />
</int:chain>

<int:channel id="outMailError">
    <int:queue capacity="500" />
</int:channel>

<int:channel id="outboundMailEntry" />

我能够将频道转换为

@Bean
public DirectChannel outboundMailEntry() {
    return new DirectChannel();
}

@Bean
public QueueChannel outboundMailErrorChannel() {
    return new QueueChannel(500);
}

但我不知道如何为 int:chain 做同样的事情。我能够调试并找出 spring 为 xml 的“链”部分实例化什么类型的 bean - PollingConsumer 需要 2 个参数 PollableChannel inputChannel, MessageHandler handler.

第一个不是问题,因为我已经有了,它是

@Qualifier("outMailError")
QueueChannel channel

但我不知道第二个...... Spring 本身初始化了一些 MessageHandlerChain 但我无法将 outMailEntry 设置为它并且也不知道轮询器和转换器..有什么想法吗?

Java 配置中没有 chain 等效项。它是专为 XML 设计的,可以最大限度地减少 XML 编码。

另一方面,您似乎根本不需要 <chain>:您那里只有一个 <int:transformer>

在 Java 配置中,您将在 mailSendErrorTransformer 方法上使用 @Trasnoformer 注释,并具有适当的 inputChanneloutputChannel 属性。 <int:poller> 等价物也作为 poller 属性存在于那里,具有可切除的 @Poller 配置。

从此处开始在文档中查看更多信息:https://docs.spring.io/spring-integration/docs/current/reference/html/overview.html#configuration-enable-integration