【问题标题】:@EnableIntegration annotation purpose@EnableIntegration 注释用途
【发布时间】:2016-06-08 15:49:09
【问题描述】:

我将项目从 XML Spring Integration 配置迁移到 Java DSL。我事先准备了一些集成测试。这样我就可以一步一步安全地进行迁移了。

在移动此 XML 连接器定义后的某个时刻

<int:publish-subscribe-channel id="upstreamAckChannel" />

到 Java Spring 配置

@Bean
public PublishSubscribeChannel upstreamAckChannel() {
    return MessageChannels.publishSubscribe().get();
}

我的集成流程停止向我的测试重新发送测试消息。

经过一段时间和实验,我意识到我的 Spring Java 配置必须具有 @EnableIntegration 注释以及通常的 Spring @Configuration 注释才能正常工作。

问题是@EnableIntegration注解语义是什么?什么时候不能使用,什么时候必须使用?

我只能在官方参考手册中找到这个小的Configuration 段落。不幸的是,描述不清楚。

【问题讨论】:

    标签: java spring spring-integration


    【解决方案1】:

    PublishSubscribeChannel 类存在于Spring Integration project 中。 @EnableIntegration 注解用于采用 Spring Integration 的默认配置,因此通常在使用 Spring Integration 时您需要添加它(除非您使用的 Spring Integration 不需要上下文——不太可能)。如果您想从头开始进行自己的配置,您可能唯一想放弃它。

    【讨论】:

    • 感谢您的回答!我如何知道 Spring Integration 的哪些组件包含(或连接)此注释?我在方法registerBeanDefinitionsIntegrationRegistrar.java 源文件中找到了一些有趣的信息,但我找不到真正处理@EnableIntegration 的确切位置。
    • 我发现这是一个很好的答案。虽然我同意我们应该改进文档。我们的假设是人们已经熟悉@EnableMvc@EnableAsync@EnableRetry@EnableJpaRepositories 和其他@Enable...。这个用于 Spring Integration 的工作方式相同:它启动 IntegrationRegistrar 向 ApplicationContext 注册一些 BeanFactoryPostProcessors 和其他基础设施。以前这对你有用,因为你有一些 XML,通过它的 NamespaceHandler 通过 IntegrationRegistrar 执行相同的基础架构。
    猜你喜欢
    • 1970-01-01
    • 2023-01-31
    • 2020-02-02
    • 2011-03-03
    • 2020-12-26
    • 2013-10-16
    • 2012-11-17
    相关资源
    最近更新 更多