多个带有隐式有效负载类型路由的@ServiceActivator方法

时间:2014-09-25 09:42:16

标签: java spring spring-integration dynamic-dispatch

是否有一种优雅的方法来定义具有多个@MessageEndpoint方法(或类似方法)的单个@ServiceActivator bean,其中方法'参数类型隐式用作有效负载类型过滤器?

我们的想法是拥有一个服务端点,它可以通过调度参数类型轻松处理不同的有效负载类型而不需要太多努力,从而减轻了其他服务方法的实现。

我了解Google Guava的EventBus,它将事件对象调度到任何具有匹配参数类型的已注册@Subscribe方法。我目前正在使用这种方法,但我想知道Spring Integration是否也可以(有点)。

1 个答案:

答案 0 :(得分:0)

在XML中,<service-activator ... ref="foo" />(没有method)将解析为基于有效负载类型的方法,只要没有歧义。

使用4.0或更高版本,您可以使用...

@Bean
@ServiceActivator(...)
public MessageHandler foo() {
    ...
}

ServiceHandlingFactoryBean设置为您的POJO(同样没有方法名称),返回targetObject

注意,在这种情况下,您必须在工厂bean上设置outputChannel(注释上的outputChannel属性将被忽略。)