Я переношу проект из конфигурации интеграции Spring Spring в Java DSL. Я заранее подготовил некоторые интеграционные тесты. Поэтому я могу сделать переход безопасно шаг за шагом.@EnableIntegration annotation Цель
В какой-то момент после перемещения этого определения соединителя XML
<int:publish-subscribe-channel id="upstreamAckChannel" />
на Java Spring Конфигурация
@Bean
public PublishSubscribeChannel upstreamAckChannel() {
return MessageChannels.publishSubscribe().get();
}
мой поток интеграции остановился тестовых сообщений для повторной отправки в моих тестах.
Через некоторое время и экспериментов я понял, что моя конфигурация Spring Java обязательно имеют @EnableIntegration
аннотацию вместе с обычным Spring @Configuration
аннотаций для правильной работы.
Вопрос в том, что такое @EnableIntegration
аннотация семантика? Когда я не могу использовать его и когда я должен использовать?
Я нашел только этот небольшой Configuration параграф в официальном справочнике. К сожалению, описание не ясно.
Благодарим за ответ! Как я могу узнать, какие компоненты интеграции Spring включены (или подключены) с помощью этой аннотации? Я нашел интересную информацию в [IntegrationRegistrar.java] (https://github.com/spring-projects/spring-integration/blob/68c0df5286e9fd762faba628a6efc9252a8a7df2/spring-integration-core/src/main/java/org/springframework/integration/ config/IntegrationRegistrar.java) в методе 'registerBeanDefinitions', но я не смог найти точное место, где' @ EnableIntegration' действительно обрабатывается. –
Я нашел это хорошим ответом. Хотя я согласен с тем, что мы должны улучшить документацию. Наше предположение состояло в том, что люди уже знакомы с чем-то вроде '@ EnableMvc',' @ EnableAsync', '@ EnableRetry',' @ EnableJpaRepositories' и других '@Enable ...'. Этот для Spring Integration работает одинаково: он инициирует 'IntegrationRegistrar' регистрировать в ApplicationContext некоторую' BeanFactoryPostProcessor' и другую инфраструктуру. Это сработало для вас раньше, потому что у вас был XML, который через свой «NamespaceHandler» выполняет ту же инфраструктуру через «IntegrationRegistrar». –
@ArtemBilan спасибо! Теперь понятно. –