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

新组件

版本 5.0 添加了许多新组件。Spring中文文档

Java DSL的

单独的 Spring Integration Java DSL 项目现已合并到核心 Spring Integration 项目中。 通道适配器和网关的实现将分发到其特定模块。 有关 Java DSL 支持的更多信息,请参阅 Java DSL。 另请参阅 4.3 到 5.0 迁移指南,了解迁移到 Spring Integration 5.0 所需的步骤。IntegrationComponentSpecSpring中文文档

测试支持

我们创建了一个新的 Spring Integration 测试框架来帮助测试 Spring Integration 应用程序。 现在,通过对测试类和工厂的注释,您可以更轻松地对集成流进行 JUnit 测试。@SpringIntegrationTestMockIntegrationSpring中文文档

有关详细信息,请参阅测试支持Spring中文文档

MongoDB 出站网关

新功能允许您通过向数据库的请求通道发送消息来按需对数据库进行查询。MongoDbOutboundGatewaySpring中文文档

有关详细信息,请参阅 MongoDB 出站网关Spring中文文档

WebFlux 网关和通道适配器

我们为 Spring WebFlux 框架网关和通道适配器引入了新的 WebFlux 支持模块。Spring中文文档

有关详细信息,请参阅 WebFlux 支持Spring中文文档

内容类型转换

现在,我们使用新的基于 的基础结构进行服务方法调用,我们可以执行从有效负载到目标方法参数的转换。InvocableHandlerMethodcontentTypeSpring中文文档

有关详细信息,请参阅内容类型转换Spring中文文档

ErrorMessagePublisherErrorMessageStrategy

我们添加了用于创建实例的 和 。ErrorMessagePublisherErrorMessageStrategyErrorMessageSpring中文文档

有关详细信息,请参阅错误处理Spring中文文档

JDBC 元数据存储

我们添加了该实现的 JDBC 实现。 当您需要确保元数据的事务边界时,这很有用。MetadataStoreSpring中文文档

有关更多信息,请参阅 JDBC 元数据存储Spring中文文档

一般更改

Spring Integration 现在完全基于 Spring Framework 和 Project Reactor 。 不再支持以前的 Project Reactor 版本。5.03.1Spring中文文档

核心变化

注解现在具有该属性,以便更轻松地配置基础 。 有关详细信息,请参阅注释支持@PollererrorChannelMessagePublishingErrorHandlerSpring中文文档

所有请求-应答端点(基于 )现在都可以启动事务,因此,使整个下游流成为事务。 有关详细信息,请参阅事务支持AbstractReplyProducingMessageHandlerSpring中文文档

现在提供了获取角色中终结点状态的方法。 有关详细信息,请参阅终结点角色SmartLifecycleRoleControllerSpring中文文档

默认情况下,POJO 方法现在使用 调用,但您可以像以前一样将它们配置为使用 SpEL。 有关更多信息,请参见 POJO 方法调用InvocableHandlerMethodSpring中文文档

现在,当将 POJO 方法作为消息处理程序时,您可以使用注释标记其中一个服务方法,以便为不匹配的条件提供回退机制。 有关详细信息,请参阅配置服务激活器@DefaultSpring中文文档

我们添加了一个简单的始终将轮询消息存储在当前事务上下文中。 该消息用作 的属性,用于包装事务完成期间引发的任何原始异常。 有关详细信息,请参阅事务同步PassThroughTransactionSynchronizationFactoryfailedMessageMessagingExceptionSpring中文文档

基于聚合器表达式的聚合器现在根据 的 计算表达式,而不仅仅是 的集合。 有关详细信息,请参阅聚合器和 Spring 表达式语言 (SpEL)。ReleaseStrategyMessageGroupMessage<?>Spring中文文档

您现在可以提供自定义的 .ObjectToMapTransformerJsonObjectMapperSpring中文文档

注释现在支持否定模式(通过预置)进行组件名称匹配。 有关详细信息,请参阅全局信道侦听器配置@GlobalChannelInterceptor<int:channel-interceptor>!Spring中文文档

当候选者未能获得锁时,现在会发出新的 . 有关详细信息,请参阅。LockRegistryLeaderInitiatorOnFailedToAcquireMutexEventDefaultLeaderEventPublisherLeadership Event HandlingSpring中文文档

网关更改

当网关方法具有返回类型并提供错误通道时,网关现在会正确设置标头。 以前,标头未填充。 这会导致同步下游流(在调用线程上运行)将异常发送到配置的通道,但异步下游流上的异常将发送到默认通道。voiderrorChannelerrorChannelSpring中文文档

该接口现在有一个条款来满足拟议的消息交换合同。RequestReplyExchangerthrows MessagingExceptionSpring中文文档

现在,您可以使用 SpEL 表达式指定请求和应答超时。 有关详细信息,请参阅邮件网关Spring中文文档

聚合器性能更改

默认情况下,聚合器现在使用 ,这更有效,尤其是对于大型组。 空组现在计划在 之后删除。 有关详细信息,请参阅聚合器SimpleSequenceSizeReleaseStrategyempty-group-min-timeoutSpring中文文档

拆分器更改

拆分器组件现在可以处理和拆分 Java 和 Reactive Streams 对象。 如果输出通道是 ,则为后续迭代构建 a 而不是常规通道,则与被拆分的对象无关。 此外,如果可能的话,提供允许确定和对象大小的方法。 有关详细信息,请参阅拆分器StreamPublisherReactiveStreamsSubscribableChannelAbstractMessageSplitterFluxIteratorAbstractMessageSplitterprotected obtainSizeIfPossible()IterableIteratorSpring中文文档

JMS 更改

以前,Spring Integration JMS XML 配置使用 JMS 连接工厂的缺省 Bean 名称,允许从组件定义中省略该属性。 我们将其重命名为 ,这是 Spring Boot 用于自动配置 JMS 连接工厂 Bean 的 bean 名称。connectionFactoryjmsConnectionFactorySpring中文文档

如果应用程序依赖于先前的行为,则可以将 Bean 重命名为 Bean 或专门配置组件以使用其当前名称来使用 Bean。 有关更多信息,请参阅 JMS 支持connectionFactoryjmsConnectionFactorySpring中文文档

邮件更改

呈现 IMAP 邮件内容时的一些不一致问题已得到解决。 有关详细信息,请参阅“邮件接收通道适配器”一节中的注释Spring中文文档

Feed 更改

我们为 . 引入了一个新属性,而不是 在 ROME 中弃用了 。 有关详细信息,请参阅源适配器com.rometools.fetcher.FeedFetcherResourceFeedEntryMessageSourceSpring中文文档

文件更改

我们引入了新的消息头来表示 中的相对路径。FileHeaders.RELATIVE_PATHFileReadingMessageSourceSpring中文文档

尾部适配器现在支持在该时间段内文件中没有数据时发出事件。idleEventIntervalSpring中文文档

now 的 flush 谓词有一个附加参数。FileWritingMessageHandlerSpring中文文档

文件出站通道适配器和网关 () 现在支持 .FileWritingMessageHandlerREPLACE_IF_MODIFIEDFileExistsModeSpring中文文档

它们现在还支持对新写入的文件设置文件权限。Spring中文文档

现在有新的可用功能。 有关详细信息,请参阅处理不完整数据FileSystemMarkerFilePresentFileListFilterSpring中文文档

现在提供了一个选项,用于将第一行内容作为标题在为其余行发出的消息中。FileSplitterfirstLineAsHeaderSpring中文文档

有关详细信息,请参阅文件支持Spring中文文档

FTP 和 SFTP 更改

入站通道适配器现在具有一个名为 的属性,该属性用于限制在轮询期间在本地目录中没有文件时提取的文件数。 默认情况下,它们还配置了 .max-fetch-sizeFileSystemPersistentAcceptOnceFileListFilterlocal-filterSpring中文文档

您还可以通过设置新引入的属性来为入站通道适配器提供自定义实现。DirectoryScannerscannerSpring中文文档

现在,您可以将正则表达式和模式过滤器配置为始终传递目录。 当您在出站网关中使用递归时,这可能很有用。Spring中文文档

默认情况下,所有入站通道适配器(基于流式处理和同步)现在都使用适当的实现来防止重复下载远程文件。AbstractPersistentAcceptOnceFileListFilterSpring中文文档

FTP 和 SFTP 出站网关现在支持在获取远程文件时。REPLACE_IF_MODIFIEDFileExistsModeSpring中文文档

FTP 和 SFTP 流入站通道适配器现在在邮件头中添加远程文件信息。Spring中文文档

FTP 和 SFTP 出站通道适配器(以及出站网关的命令)现在也支持 。PUTInputStreampayloadSpring中文文档

入站通道适配器现在可以使用新引入的 . 请参阅 FTP 入站通道适配器部分中的选项进行注入。 此外,您现在可以将这些适配器切换到 相反。RecursiveDirectoryScannerscannerWatchServiceSpring中文文档

我们在执行列表文件名远程命令中添加了该命令。NLSTAbstractRemoteFileOutboundGatewaySpring中文文档

现在,您可以提供 with 来更改当前请求消息的 FTP 客户端工作目录。FtpOutboundGatewayworkingDirExpressionSpring中文文档

现在提供了 在相同的线程绑定 .RemoteFileTemplateinvoke(OperationsCallback<F, T> action)RemoteFileOperationsSessionSpring中文文档

我们添加了新的筛选器,用于检测不完整的远程文件。Spring中文文档

现在支持使用 or 命令在成功传输后删除远程文件的选项。FtpOutboundGatewaySftpOutboundGatewayGETMGETSpring中文文档

有关详细信息,请参阅 FTP/FTPS 适配器SFTP 适配器Spring中文文档

集成属性

版本 4.3.2 添加了一个新的全局属性,允许您自定义不应复制到 新创建的标头列表。 有关详细信息,请参阅全局属性spring.integration.readOnly.headersMessageMessageBuilderSpring中文文档

流更改

我们在 上添加了一个新选项,让它用于“管道”stdin 并在管道关闭时发布应用程序事件。 有关更多信息,请参阅从流中读取CharacterStreamReadingMessageSourceSpring中文文档

屏障变化

现在支持将延迟到达的触发消息发送到的丢弃通道。 有关详细信息,请参阅线程屏障BarrierMessageHandlerSpring中文文档

AMQP 更改

AMQP 出站终端节点现在支持在使用 RabbitMQ 延迟消息交换插件时设置延迟表达式。Spring中文文档

入站端点现在支持 Spring AMQP 。DirectMessageListenerContainerSpring中文文档

可轮询 AMQP 支持的通道现在会阻止已配置的轮询器线程(默认值:1 秒)。receiveTimeoutSpring中文文档

由消息转换器添加到消息属性的标头(如 )现在用于最终消息中。 以前,它取决于转换器类型,以确定最终消息中显示哪些标头和消息属性。 若要重写转换器设置的标头,请将该属性设置为 。 有关详细信息,请参阅 AMQP 支持contentTypeheadersMappedLasttrueSpring中文文档

HTTP 更改

默认情况下,该属性现在为空字符串,而不是 。 有关详细信息,请参阅 HTTP 标头映射DefaultHttpHeaderMapper.userDefinedHeaderPrefixX-Spring中文文档

默认情况下,现在使用 (从 5.0.4 开始)。uriVariablesExpressionSimpleEvaluationContextSpring中文文档

有关详细信息,请参阅映射 URI 变量Spring中文文档

MQTT 更改

入站消息现在与 、 和 标头进行映射,以避免在应用程序中继消息时无意中传播到出站消息。RECEIVED_TOPICRECEIVED_QOSRECEIVED_RETAINEDSpring中文文档

出站通道适配器现在支持主题、qos 和保留属性的表达式。 默认值保持不变。 有关更多信息,请参阅 MQTT 支持Spring中文文档

STOMP 更改

我们根据 Project Reactor 和扩展更改了要使用的 STOMP 模块。 根据基金会,我们更名为 。 有关详细信息,请参阅 STOMP 支持ReactorNettyTcpStompClient3.1reactor-nettyReactor2TcpStompSessionManagerReactorNettyTcpStompSessionManagerReactorNettyTcpStompClientSpring中文文档

Web 服务更改

您现在可以为实例提供外部配置的实例。WebServiceOutboundGatewayWebServiceTemplateSpring中文文档

DefaultSoapHeaderMapper现在可以将用户定义的标头映射到 SOAP 标头元素。javax.xml.transform.SourceSpring中文文档

简单的 WebService 入站和出站网关现在可以将 complete 作为 ,允许操作 MTOM 附件。WebServiceMessagepayloadSpring中文文档

有关更多信息,请参见 Web 服务支持Spring中文文档

Redis 更改

现在为 SpEL 表达式提供了额外的基于 -setter 的 setter(为了方便 Java 配置)。 您现在也可以配置 on。 此外,由于 Redis 命令上的选项是可选的,因此此属性已从 to 更改。RedisStoreWritingMessageHandlerStringzsetIncrementExpressionRedisStoreWritingMessageHandlertruefalseINCRZADDSpring中文文档

现在,您可以为 提供用于执行 Redis 侦听器调用程序的 。 此外,收到的消息现在包含一个标头,用于指示消息的来源(主题或模式)。RedisInboundChannelAdapterExecutorRedisHeaders.MESSAGE_SOURCESpring中文文档

有关详细信息,请参阅 Redis 支持Spring中文文档

TCP 更改

我们添加了一个新功能,用于将 TCP 连接绑定到线程。ThreadAffinityClientConnectionFactorySpring中文文档

现在,您可以将 TCP 连接工厂配置为支持实例,让反序列化程序在“提前读取”后“取消读取”(推回)字节。PushbackInputStreamSpring中文文档

我们添加了一个 without 来控制和缓冲传入的数据。ByteArrayElasticRawDeserializermaxMessageSizeSpring中文文档

有关详细信息,请参阅 TCP 和 UDP 支持Spring中文文档

JDBC 更改

现在提供了 的 setter,允许您自定义存储中的消息插入。JdbcMessageChannelStoreChannelMessageStorePreparedStatementSetterSpring中文文档

现在提供了 的 setter ,允许您自定义参数的 SQL 类型。ExpressionEvaluatingSqlParameterSourceFactorysqlParameterTypesSpring中文文档

有关更多信息,请参阅 JDBC 支持Spring中文文档

指标更改

现在支持千分尺应用监控(从版本 5.0.2 开始)。 有关详细信息,请参阅千分尺集成Spring中文文档

在 5.0.3 版中对千分尺进行了更改,使其更适合在尺寸系统中使用。 在 5.0.4 中进行了进一步的更改。 如果您使用 Micrometer,我们建议至少使用 5.0.4 版。Meters

@EndpointId附注

此注释在 V5.0.4 中引入,在使用 Java 配置时提供对 Bean 命名的控制。 有关更多信息,请参阅端点 Bean 名称Spring中文文档

在 5.0.3 版中对千分尺进行了更改,使其更适合在尺寸系统中使用。 在 5.0.4 中进行了进一步的更改。 如果您使用 Micrometer,我们建议至少使用 5.0.4 版。Meters