将此 Java 8 DSL 转换为非 Java 8
Convert this Java 8 DSL to non-Java 8
我在使用 XML 命名空间几年后才开始使用 Spring 集成 DSL。
我喜欢 DSL,但我缺乏 Java 8 知识阻碍了我。
例如,您将如何在 Java 7 中编写以下示例代码,我对 e -> e.id("sendMailEndpoint"))
感到困惑,因为我无法弄清楚 e
是什么类型!
@Bean
public IntegrationFlow sendMailFlow() {
return IntegrationFlows.from("sendMailChannel")
.handle(Mail.outboundAdapter("localhost")
.port(smtpPort)
.credentials("user", "pw")
.protocol("smtp")
.javaMailProperties(p -> p.put("mail.debug", "true")),
e -> e.id("sendMailEndpoint"))
.get();
}
亲切的问候
大卫/
David,任何 Lambda 都是内联功能接口实现。
如果您查看 .handle()
方法的源代码(或至少 JavaDocs),您会发现 e
参数是 Consumer<GenericEndpointSpec<H>>
,因此对于非-Java 8 环境你只需要在这个地方实现那个接口:
.handle(Mail.outboundAdapter("localhost")
.port(smtpPort)
.credentials("user", "pw")
.protocol("smtp")
.javaMailProperties(p -> p.put("mail.debug", "true")),
new Consumer<GenericEndpointSpec<MailSendingMessageHandler>>() {
@Override
public void accept(GenericEndpointSpec<MailSendingMessageHandler> e) {
e.id("sendMailEndpoint");
}
})
javaMailProperties
也是如此。
我在使用 XML 命名空间几年后才开始使用 Spring 集成 DSL。
我喜欢 DSL,但我缺乏 Java 8 知识阻碍了我。
例如,您将如何在 Java 7 中编写以下示例代码,我对 e -> e.id("sendMailEndpoint"))
感到困惑,因为我无法弄清楚 e
是什么类型!
@Bean
public IntegrationFlow sendMailFlow() {
return IntegrationFlows.from("sendMailChannel")
.handle(Mail.outboundAdapter("localhost")
.port(smtpPort)
.credentials("user", "pw")
.protocol("smtp")
.javaMailProperties(p -> p.put("mail.debug", "true")),
e -> e.id("sendMailEndpoint"))
.get();
}
亲切的问候
大卫/
David,任何 Lambda 都是内联功能接口实现。
如果您查看 .handle()
方法的源代码(或至少 JavaDocs),您会发现 e
参数是 Consumer<GenericEndpointSpec<H>>
,因此对于非-Java 8 环境你只需要在这个地方实现那个接口:
.handle(Mail.outboundAdapter("localhost")
.port(smtpPort)
.credentials("user", "pw")
.protocol("smtp")
.javaMailProperties(p -> p.put("mail.debug", "true")),
new Consumer<GenericEndpointSpec<MailSendingMessageHandler>>() {
@Override
public void accept(GenericEndpointSpec<MailSendingMessageHandler> e) {
e.id("sendMailEndpoint");
}
})
javaMailProperties
也是如此。