Как работают типы возврата Spring Integration ServiceActivator? - PullRequest
0 голосов
/ 28 ноября 2018

Когда вы добавляете аннотацию @ 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
}

1 Ответ

0 голосов
/ 28 ноября 2018

Вы указываете на Аннотации сообщений на @Bean.Это немного другая история, и она подразумевает, что она не связана с вызовом метода POJO аспект.

Мы используем этот @ServiceActivator на MessageHandler @Bean для регистрации конечной точки EventDrivenConsumerдля предоставленного MessageHandler, когда стиль метода POJO создает MethodInvokingMessageHandler для помеченного этим методом @ServiceActivator.

Пожалуйста, см. дополнительную информацию в Справочном руководстве:

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

...