Spring Integration ServiceActivator返回类型如何工作?

时间:2018-11-27 23:29:20

标签: java spring spring-integration

在方法上添加@ServiceActivator批注时,该方法可以具有不同的返回类型,这些返回类型似乎对服务有不同的含义:

@ServiceActivator(inputChannel = "..", outputChannel = "..")
public T messageReceiver() {...}

T可能在哪里

  • void
  • Object
  • MessageHandler

ServiceActivator根据返回类型有何不同?我特别想知道docs中的行内容:

  

带注释的方法的返回值可以是任何类型。如果返回值不是Message,则将创建一个以该对象作为有效载荷的回复消息。

但是我没有遵循此规定,因为我看到人们从其ServiceActivator注释的方法中返回MessageHandlers,并且他们不希望将MessageHandlers包装为有效载荷吗?

像这样:

@Bean
@ServiceActivator(inputChannel = "sendAsyncChannel", autoStartup="false")
public MessageHandler sendAsyncHandler() {
     return // some MessageHandler
}

1 个答案:

答案 0 :(得分:1)

您指向的是@Bean 上的邮件注释。这是个不同的故事,它暗示与 POJO方法调用方面无关。

当POJO方法样式创建{时,我们使用@ServiceActivator MessageHandler上的@Bean为提供的EventDrivenConsumer注册一个MessageHandler端点。 {1}}标记为此MethodInvokingMessageHandler方法。

请在参考手册中查看更多信息:

https://docs.spring.io/spring-integration/docs/5.0.9.RELEASE/reference/html/overview.html#programming-tips 和:

https://docs.spring.io/spring-integration/docs/5.0.9.RELEASE/reference/html/configuration.html#annotations_on_beans