对于最新的稳定版本,请使用 Spring Integration 6.3.1

对于最新的稳定版本,请使用 Spring Integration 6.3.1

请参阅迁移指南,了解可能影响应用程序的重要更改。 您可以在 wiki 上找到所有版本的迁移指南,这些版本可以追溯到 2.1

新组件

版本 4.0 添加了许多新组件。

MQTT 通道适配器

MQTT 通道适配器(以前在 Spring Integration Extensions 存储库中可用)现在作为普通 Spring Integration 发行版的一部分提供。 请参阅 MQTT 支持

@EnableIntegration

我们添加了注解,以允许在使用类时声明标准 Spring Integration bean。 有关详细信息,请参阅注释支持@EnableIntegration@Configuration

@IntegrationComponentScan

我们添加了注释,以允许对 Spring Integration 特定组件进行类路径扫描。 有关详细信息,请参阅注释支持@IntegrationComponentScan

“@EnableMessageHistory”

现在,您可以使用类中的注释启用消息历史记录。 此外,JMX MBean 可以修改消息历史记录设置。 此外,还可以跟踪带注释的终结点(如 、 等)的自动创建的实例。 有关详细信息,请参阅消息历史记录@EnableMessageHistory@ConfigurationMessageHistoryMessageHandler@ServiceActivator@Splitter

@MessagingGateway

现在,您可以使用注释配置邮件网关接口。 它是 XML 元素的类似物。 有关详细信息,请参阅@MessagingGateway注释@MessagingGateway<int:gateway/>

Spring 启动@EnableAutoConfiguration

除了前面提到的注解之外,我们还引入了一个钩子,允许使用 Spring Boot 的注解来配置 Spring Integration 基础架构 bean。 有关详细信息,请参阅《Spring Boot 参考指南》中的“自动配置”@EnableIntegration@EnableAutoConfiguration

@GlobalChannelInterceptor

除了上面提到的注释外,我们还介绍了注释。 有关详细信息,请参阅注释支持@EnableIntegration@GlobalChannelInterceptor

@IntegrationConverter

我们引入了注释作为组件的类似物。 有关详细信息,请参阅注释支持@IntegrationConverter<int:converter/>

@EnablePublisher

我们添加了注释,以允许对注释进行规范。 有关详细信息,请参阅注释支持@EnablePublisherdefault-publisher-channel@Publisher

Redis 通道消息存储

我们添加了一个 Redis,该 Redis 经过优化,可在支持持久性时使用。 有关更多信息,请参阅 Redis 通道消息存储库。MessageGroupStoreQueueChannel

我们添加了一个 Redis 。 您可以使用它按优先级检索邮件。 有关更多信息,请参阅 Redis 通道消息存储库。ChannelPriorityMessageStore

MongodDB通道消息存储库

MongoDB 支持现在提供 ,这是一个特定于通道的实现。 使用 ,可以在元素中使用它来实现持久化消息的优先级轮询。 有关更多信息,请参阅 MongoDB 通道消息存储库。MongoDbChannelMessageStoreMessageStorepriorityEnabled = true<int:priority-queue>

@EnableIntegrationMBeanExport

现在,您可以在类中启用带有注释的注释。 有关更多信息,请参见 MBean ExporterIntegrationMBeanExporter@EnableIntegrationMBeanExport@Configuration

ChannelSecurityInterceptorFactoryBean

ChannelSecurityInterceptorFactoryBean现在支持为使用类的消息通道配置 Spring Security。 有关更多信息,请参阅 Spring Integration 中的安全性@Configuration

Redis 命令网关

Redis 支持现在提供组件,以使用该方法执行通用 Redis 命令。 有关更多信息,请参阅 Redis 出站命令网关<outbound-gateway>RedisConnection#execute

RedisLockRegistry

现在可用于支持对多个应用程序实例和服务器可见的全局锁。 它们可以与跨多个应用程序实例的聚合消息处理程序一起使用,以便仅在一个实例上进行组释放。 有关更多信息,请参阅 Redis Lock Registry and AggregatorRedisLockRegistry

@Poller

基于注释的消息传递配置现在可以具有属性。 这意味着用 、 和类似批注批注的方法现在可以使用对 的引用。 有关详细信息,请参阅注释支持poller@ServiceActivator@AggregatorinputChannelPollableChannel

@InboundChannelAdapter和带注释的端点SmartLifecycle

我们添加了方法注释。 它是 XML 组件的类似物。 此外,所有消息注释现在都提供了选项。 有关详细信息,请参阅注释支持@InboundChannelAdapter<int:inbound-channel-adapter>SmartLifecycle

Twitter 搜索出站网关

我们添加了一个新的 twitter 端点:. 与每次使用相同搜索查询轮询的搜索入站适配器不同,出站网关允许按需自定义查询。 有关更多信息,请参阅 Spring Integration Social Twitter<int-twitter-search-outbound-gateway/>

@BridgeFrom和注释@BridgeTo

我们引入了 和 方法注释来标记类中的 bean。 有关详细信息,请参阅注释支持@BridgeFrom@BridgeTo@BeanMessageChannel@Configuration

元消息注释

消息传递注释(、、 等)现在可以配置为用户定义的消息传递注释的元注释。 此外,用户定义的批注可以具有相同的属性(、、 等)。 有关详细信息,请参阅注释支持@ServiceActivator@Router@MessagingGatewayinputChannel@PollerautoStartup

一般更改

本节介绍从 3.0 版到 4.0 版的一般更改。

需要Spring Framework 4.0

我们将核心消息传递抽象(、 等)移到了 Spring Framework 模块中。 直接在代码中引用这些类的开发人员需要进行更改,如 3.0 到 4.0 迁移指南的第一部分所述。MessageMessageChannelspring-messaging

XPath 标头 Enricher 的标头类型

我们引入了 的 子元素的属性。 此属性提供标头值的目标类型(XPath 表达式计算结果将转换为该值)。 有关详细信息,请参阅 XPath 标头扩充器header-typeheader<int-xml:xpath-header-enricher>

JSON 转换器的对象:节点结果

我们引入了 . 此属性为将对象映射到 JSON 的结果提供目标类型。 它支持(默认)和 . 有关更多信息,请参阅从版本 3.0 开始,Spring Integration 还提供了一个内置的 #xpath SpEL 函数,用于表达式。result-type<int:object-to-json-transformer>STRINGNODE

JMS 标头映射

现在将传入标头映射到 Spring Integration 标头。 以前,仅考虑用于出站消息。 有关更多信息,请参阅将消息头映射到 JMS 消息和从 JMS 消息映射消息。DefaultJmsHeaderMapperJMSPriorityprioritypriority

JMS 出站通道适配器

JMS 出站通道适配器现在支持该属性(缺省值:)。 以前,您必须注入自定义的才能使用事务。 请参阅出站通道适配器session-transactedfalseJmsTemplate

JMS 入站通道适配器

JMS 入站通道适配器现在支持属性(缺省值:)。 以前,您必须注入自定义的才能使用事务。 适配器允许在 中“交易”,这是不正确的,不起作用。 不再允许此值。 请参阅入站通道适配器session-transactedfalseJmsTemplateacknowledgeMode

数据类型通道

现在,您可以指定在将有效负载(如有必要)转换为数据类型通道中接受的实例之一时要使用的实例。 有关详细信息,请参阅数据类型通道配置MessageConverterdatatype

更简单的重试建议配置

我们添加了简化的命名空间支持,以配置 . 有关更多信息,请参阅配置重试建议RequestHandlerRetryAdvice

关联端点:基于时间的发布策略

我们在 和 中添加了互斥 和 属性。 这些属性允许强制完成部分 ,前提是 不释放组,并且在指定的时间内没有进一步的消息到达。 有关更多信息,请参阅使用 XML 配置聚合器group-timeoutgroup-timeout-expression<int:aggregator><int:resequencer>MessageGroupReleaseStrategy

Redis 元数据存储

现在的实现 ,例如,在多个应用程序实例或服务器环境中的实现中使用它。 有关更多信息,请参阅 Redis 元数据存储读取文件FTP 入站通道适配器SFTP 入站通道适配器RedisMetadataStoreConcurrentMetadataStoreAbstractPersistentAcceptOnceFileListFilter

JdbcChannelMessageStorePriorityChannel

T'JdbcChannelMessageStore' 现在实现 ,允许它用作实例的引用。 有关详细信息,请参阅支持消息通道PriorityCapableChannelMessageStoremessage-storepriority-queue

AMQP 终结点交付模式

默认情况下,Spring AMQP 会在代理上创建持久性消息。 您可以通过设置标头或自定义映射器来覆盖此行为。 我们向适配器添加了一个方便的属性,以便更轻松地配置此重要设置。 有关详细信息,请参阅出站通道适配器出站网关amqp_deliveryModedefault-delivery-mode

FTP 超时

现在公开了 、 和 属性,避免了对工厂进行子类化来设置这些公共属性的需要。 这些方法仍可用于更高级的配置。 有关详细信息,请参阅 FTP 会话工厂DefaultFtpSessionFactoryconnectTimeoutdefaultTimeoutdataTimeoutpostProcess*

唽:StatusUpdatingMessageHandler

() 现在支持构建用于更新时间线状态的对象的属性。 例如,此功能允许附加图像。 有关更多信息,请参阅 Spring Integration Social TwitterStatusUpdatingMessageHandler<int-twitter:outbound-channel-adapter>tweet-data-expressionorg.springframework.social.twitter.api.TweetData

JPA 检索网关:id-expression

我们引入了 to perform 的属性。 有关详细信息,请参阅检索出站网关id-expression<int-jpa:retrieving-outbound-gateway>EntityManager.find(Class entityClass, Object primaryKey)

TCP 反序列化事件

当其中一个标准反序列化程序在将输入流解码为消息时遇到问题时,它现在会发出一个 ,让应用程序在发生异常时检查数据。 有关详细信息,请参阅 TCP 连接事件TcpDeserializationExceptionEvent

对定义进行消息传递注释@Bean

现在,您可以在类中的定义上配置消息注释(、、 等)。 有关详细信息,请参阅注释支持@ServiceActivator@Router@InboundChannelAdapter@Bean@Configuration