在方法上添加@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
}
答案 0 :(得分:1)
您指向的是@Bean
上的邮件注释。这是个不同的故事,它暗示与 POJO方法调用方面无关。
当POJO方法样式创建{时,我们使用@ServiceActivator
MessageHandler
上的@Bean
为提供的EventDrivenConsumer
注册一个MessageHandler
端点。 {1}}标记为此MethodInvokingMessageHandler
方法。
请在参考手册中查看更多信息: