当你添加 @ServiceActivator方法上的注释,该方法可以有不同的返回类型,这似乎对服务有不同的影响:
@ServiceActivator(inputChannel = "..", outputChannel = "..")
public T messageReceiver() {...}
T可能在哪里
无效
对象
消息处理程序
ServiceActivator 根据返回类型有何不同?我特别想知道 docs 中的那一行上面写着:
Return values from the annotated method may be of any type. If the return value is not a Message, a reply Message will be created with that object as its payload.
但我没有遵循这个,因为我看到人们从他们的 ServiceActivator 注释方法返回 MessageHandlers,他们不希望他们的 MessageHandlers 被包装为有效负载,对吗?
像这样:
@Bean
@ServiceActivator(inputChannel = "sendAsyncChannel", autoStartup="false")
public MessageHandler sendAsyncHandler() {
return // some MessageHandler
}
最佳答案
您所指的是 @Bean
上的消息传递注释。这是一个有点不同的故事,它暗示与 POJO 方法调用方面无关。
我们在 MessageHandler
@Bean
上使用 @ServiceActivator
为提供的 EventDrivenConsumer
端点注册 MessageHandler
,当POJO方法样式时,为标有此@ServiceActivator
方法的创建一个MethodInvokingMessageHandler
。
请在引用手册中查看更多信息:
关于java - Spring Integration ServiceActivator 返回类型如何工作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53509827/