首先,SI DSL 只是现有 SI Java 和 Annotation 配置的扩展,因此它可以与任何其他 Java 配置一起使用。当然,XML@Import
也是可能的。
DSL 中没有网关配置,因为它的方法不能与 linear 连接IntegrationFlow
。需要为每种方法提供下游流程。
因此,@MessagingGateway
正确的方法是:
@MessagingGateway(name = "notificationExecutionsListener", defaultRequestChannel = "stepExecutionsChannel")
public interface MyStepExecutionListener extends StepExecutionListener {}
从另一边@MessagingGateway
解析以及<gateway>
标签解析最终得到GatewayProxyFactoryBean
定义。因此,如果您不想引入新类,则只需声明该 bean:
@Bean
public GatewayProxyFactoryBean notificationExecutionsListener(MessageChannel stepExecutionsChannel) {
GatewayProxyFactoryBean gateway = new GatewayProxyFactoryBean(StepExecutionListener.class);
gateway.setDefaultRequestChannel(stepExecutionsChannel);
return gateway;
}
在最新的Milestone 3之后,我有一个想法要介绍nested flows
,什么时候我们可以引入对流Gateway
的支持。像这样的东西:
@Bean
public IntegrationFlow gatewayFlow() {
return IntegrationFlows
.from(MyGateway.class, g ->
g.method("save", f -> f.transform(...)
.filter(...))
.method("delete", f -> f.handle(...)))
.handle(...)
.get();
}
但是我不确定它是否会简化生活,因为任何嵌套的 Lambda 只会增加更多的噪音并且可能会破坏loosely coupling
原则。