Когда вы добавляете аннотацию @ ServiceActivator к методу, этот метод может иметь разные типы возвращаемых данных, которые могут иметь различные последствия для сервиса:
@ServiceActivator(inputChannel = "..", outputChannel = "..")
public T messageReceiver() {...}
Где T может быть
void
Object
MessageHandler
Чем ServiceActivator отличается в зависимости от типа возвращаемого значения?Меня особенно интересует строка в документах , которая гласит:
Возвращаемые значения из аннотированного метода могут быть любого типа.Если возвращаемое значение не является сообщением, ответное сообщение будет создано с этим объектом в качестве полезной нагрузки.
Но я не слежу за этим, потому что я видел, как люди возвращали MessageHandlers из их ServiceActivator-аннотированные методы, и они не хотят, чтобы их MessageHandlers были обернуты как полезная нагрузка, верно?
Как это:
@Bean
@ServiceActivator(inputChannel = "sendAsyncChannel", autoStartup="false")
public MessageHandler sendAsyncHandler() {
return // some MessageHandler
}