4.3 和 5.0 之间的更改

请参阅迁移指南,了解可能影响应用程序的重要更改。 您可以在 wiki 上找到 2.1 之前所有版本的迁移指南。spring-doc.cn

新组件

版本 5.0 添加了许多新组件。spring-doc.cn

Java DSL

单独的 Spring Integration Java DSL 项目现在已经合并到核心 Spring Integration 项目中。 通道适配器和网关的实现被分发到它们的特定模块中。 有关 Java DSL 支持的更多信息,请参阅 Java DSL。 另请参阅 4.3 到 5.0 迁移指南,了解迁移到 Spring Integration 5.0 所需的步骤。IntegrationComponentSpecspring-doc.cn

测试支持

我们创建了一个新的 Spring 集成测试框架来帮助测试 Spring 集成应用程序。 现在,通过测试类和工厂上的注释,您可以使集成流的 JUnit 测试变得更加容易。@SpringIntegrationTestMockIntegrationspring-doc.cn

有关更多信息,请参阅测试支持spring-doc.cn

MongoDB 出站网关

新版允许您通过向数据库的请求通道发送消息来按需对数据库进行查询。MongoDbOutboundGatewayspring-doc.cn

有关更多信息,请参阅 MongoDB 出站网关spring-doc.cn

WebFlux 网关和通道适配器

我们为 Spring WebFlux 框架网关和通道适配器引入了新的 WebFlux 支持模块。spring-doc.cn

有关更多信息,请参阅 WebFlux 支持spring-doc.cn

内容类型转换

现在,我们已经使用新的基于 的基础设施进行服务方法调用,我们可以执行从有效负载到目标方法参数的转换。InvocableHandlerMethodcontentTypespring-doc.cn

有关更多信息,请参阅 内容类型转换spring-doc.cn

ErrorMessagePublisherErrorMessageStrategy

我们添加了用于创建实例。ErrorMessagePublisherErrorMessageStrategyErrorMessagespring-doc.cn

有关更多信息,请参阅错误处理spring-doc.cn

JDBC 元数据存储

我们添加了该实现的 JDBC 实现。 当您需要确保元数据的事务边界时,这非常有用。MetadataStorespring-doc.cn

有关更多信息,请参阅 JDBC 元数据存储spring-doc.cn

一般更改

Spring 集成现在完全基于 Spring Framework 和 Project Reactor 。 以前的 Project Reactor 版本不再受支持。5.03.1spring-doc.cn

核心变更

注释现在具有用于更轻松地配置底层 . 有关更多信息,请参阅 Annotation Support@PollererrorChannelMessagePublishingErrorHandlerspring-doc.cn

所有请求-回复端点(基于 )现在都可以启动事务,因此,使整个下游流具有事务性。 有关更多信息,请参阅 Transaction SupportAbstractReplyProducingMessageHandlerspring-doc.cn

现在提供了获取角色中终端节点状态的方法。 有关更多信息,请参阅终端节点角色SmartLifecycleRoleControllerspring-doc.cn

默认情况下,POJO 方法现在通过使用 ,但你可以像以前一样将它们配置为使用 SPEL。 有关更多信息,请参阅 POJO 方法调用InvocableHandlerMethodspring-doc.cn

当将 POJO 方法作为消息处理程序时,您现在可以使用注释标记其中一个服务方法,以便为不匹配的条件提供回退机制。 有关更多信息,请参阅配置 Service Activator@Defaultspring-doc.cn

我们添加了一个简单的 to always store a polled message in the current transaction context. 该消息用作 的属性,该属性包装事务完成期间引发的任何原始异常。 有关更多信息,请参阅 事务同步PassThroughTransactionSynchronizationFactoryfailedMessageMessagingExceptionspring-doc.cn

现在,基于聚合器表达式的聚合器根据 而不是仅 的集合来计算表达式。 有关更多信息,请参见聚合器和 Spring 表达式语言 (SpEL)。ReleaseStrategyMessageGroupMessage<?>spring-doc.cn

现在,您可以为 提供自定义的 .ObjectToMapTransformerJsonObjectMapperspring-doc.cn

注解 和 现在支持组件名称匹配的负模式(通过预置)。 有关更多信息,请参见 Global Channel Interceptor Configuration@GlobalChannelInterceptor<int:channel-interceptor>!spring-doc.cn

当候选者无法获取锁时,现在会发出一个新的 through 。 有关更多信息,请参阅。LockRegistryLeaderInitiatorOnFailedToAcquireMutexEventDefaultLeaderEventPublisherLeadership Event Handlingspring-doc.cn

网关更改

当网关方法具有 return 类型并提供错误通道时,网关现在可以正确设置 header。 以前,标题未填充。 这会导致同步下游流(在调用线程上运行)将异常发送到配置的通道,但异步下游流上的异常将改为发送到默认通道。voiderrorChannelerrorChannelspring-doc.cn

该接口现在有一个子句来满足提议的消息交换协定。RequestReplyExchangerthrows MessagingExceptionspring-doc.cn

现在,您可以使用 SPEL 表达式指定请求和回复超时。 有关更多信息,请参阅 Messaging Gateway。spring-doc.cn

聚合器性能更改

默认情况下,聚合商现在使用 ,这效率更高,尤其是对于大型组。 现在,空组计划在 之后删除。 有关更多信息,请参阅 AggregatorSimpleSequenceSizeReleaseStrategyempty-group-min-timeoutspring-doc.cn

Splitter 更改

splitter 组件现在可以处理和拆分 Java 和 Reactive Streams 对象。 如果输出通道是 ,则为后续迭代构建 ,而不是 常规 ,独立于要拆分的对象。 此外,如果可能,还提供了允许确定 and 对象大小的方法。 有关更多信息,请参阅 SplitterStreamPublisherReactiveStreamsSubscribableChannelAbstractMessageSplitterFluxIteratorAbstractMessageSplitterprotected obtainSizeIfPossible()IterableIteratorspring-doc.cn

JMS 更改

以前, Spring 集成 JMS XML 配置使用 JMS 连接工厂的默认 bean 名称 ,从而允许在组件定义中省略该属性。 我们将其重命名为 ,这是 Spring Boot 用于自动配置 JMS 连接工厂 bean 的 bean 名称。connectionFactoryjmsConnectionFactoryspring-doc.cn

如果您的应用程序依赖于以前的行为,则可以将 Bean 重命名为使用当前名称,或者专门将组件配置为使用 Bean。 有关更多信息,请参阅 JMS 支持connectionFactoryjmsConnectionFactoryspring-doc.cn

邮件更改

呈现 IMAP 邮件内容时的一些不一致问题已得到解决。 有关更多信息,请参阅“邮件接收通道适配器”部分中的注释spring-doc.cn

Feed 更改

我们没有使用 ROME 中弃用的 ,而是为 . 有关更多信息,请参阅 Feed Adaptercom.rometools.fetcher.FeedFetcherResourceFeedEntryMessageSourcespring-doc.cn

文件更改

我们引入了新的消息报头来表示 中的相对路径。FileHeaders.RELATIVE_PATHFileReadingMessageSourcespring-doc.cn

尾部适配器现在支持在该时间段内文件中没有数据时发出事件。idleEventIntervalspring-doc.cn

现在的 flush 谓词具有一个附加参数。FileWritingMessageHandlerspring-doc.cn

文件出站通道适配器和网关 () 现在支持 .FileWritingMessageHandlerREPLACE_IF_MODIFIEDFileExistsModespring-doc.cn

它们现在还支持对新写入的文件设置文件权限。spring-doc.cn

现在有新的可用。 有关更多信息,请参阅处理不完整的数据FileSystemMarkerFilePresentFileListFilterspring-doc.cn

现在提供了一个选项,用于将第一行内容作为标头包含在为其余行发出的消息中。FileSplitterfirstLineAsHeaderspring-doc.cn

有关更多信息,请参阅文件支持spring-doc.cn

FTP 和 SFTP 更改

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

您还可以通过设置新引入的属性来为入站通道适配器提供自定义实现。DirectoryScannerscannerspring-doc.cn

您现在可以将 regex 和 pattern 过滤器配置为始终传递目录。 当您在出站网关中使用递归时,这可能很有用。spring-doc.cn

默认情况下,所有入站通道适配器(基于流和同步)现在都使用适当的实现来防止重复下载远程文件。AbstractPersistentAcceptOnceFileListFilterspring-doc.cn

FTP 和 SFTP 出站网关现在支持在获取远程文件时。REPLACE_IF_MODIFIEDFileExistsModespring-doc.cn

FTP 和 SFTP 流入站通道适配器现在在消息头中添加远程文件信息。spring-doc.cn

FTP 和 SFTP 出站通道适配器(以及用于出站网关的命令)现在也支持 as。PUTInputStreampayloadspring-doc.cn

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

我们添加了 The command to perform the list files names remote 命令。NLSTAbstractRemoteFileOutboundGatewayspring-doc.cn

现在,您可以提供 with 来更改当前请求消息的 FTP 客户端工作目录。FtpOutboundGatewayworkingDirExpressionspring-doc.cn

现在提供了 ,用于在同一个线程绑定的 .RemoteFileTemplateinvoke(OperationsCallback<F, T> action)RemoteFileOperationsSessionspring-doc.cn

我们添加了用于检测不完整远程文件的新过滤器。spring-doc.cn

和 现在支持在成功传输后使用 or 命令删除远程文件的选项。FtpOutboundGatewaySftpOutboundGatewayGETMGETspring-doc.cn

有关更多信息,请参阅 FTP/FTPS 适配器SFTP 适配器spring-doc.cn

集成属性

版本 4.3.2 添加了一个新的全局属性,允许您自定义不应复制到新创建的 . 有关更多信息,请参阅全局属性spring.integration.readOnly.headersMessageMessageBuilderspring-doc.cn

流更改

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

屏障变化

现在支持 discard 通道,延迟到达的触发器消息将发送到该通道。 有关更多信息,请参见 Thread BarrierBarrierMessageHandlerspring-doc.cn

AMQP 更改

AMQP 出站终端节点现在支持在使用 RabbitMQ 延迟消息交换插件时设置延迟表达式。spring-doc.cn

入站端点现在支持 Spring AMQP 。DirectMessageListenerContainerspring-doc.cn

可轮询的 AMQP 支持的通道现在阻止 Poller 配置的 Poller 线程(默认值:1 秒)。receiveTimeoutspring-doc.cn

消息转换器添加到消息属性的 Headers(如 )现在用于最终消息。 以前,它取决于转换器类型,即哪些 Headers 和 Message 属性出现在最终消息中。 要覆盖转换器设置的标头,请将属性设置为 。 有关更多信息,请参阅 AMQP 支持contentTypeheadersMappedLasttruespring-doc.cn

HTTP 更改

默认情况下,该属性现在是空字符串,而不是 . 有关更多信息,请参阅 HTTP 标头映射DefaultHttpHeaderMapper.userDefinedHeaderPrefixX-spring-doc.cn

默认情况下,现在使用 a(自 5.0.4 起)。uriVariablesExpressionSimpleEvaluationContextspring-doc.cn

有关更多信息,请参阅映射 URI 变量spring-doc.cn

MQTT 变更

入站消息现在使用 、 和 标头进行映射,以避免在应用程序中继消息时无意中传播到出站消息。RECEIVED_TOPICRECEIVED_QOSRECEIVED_RETAINEDspring-doc.cn

出站通道适配器现在支持 topic、qos 和 retained 属性的表达式。 默认值保持不变。 有关更多信息,请参阅 MQTT 支持spring-doc.cn

STOMP 更改

我们根据 Project Reactor 和扩展将 STOMP 模块更改为使用 。 根据基金会的说法,我们重命名为 。 有关更多信息,请参阅 STOMP 支持ReactorNettyTcpStompClient3.1reactor-nettyReactor2TcpStompSessionManagerReactorNettyTcpStompSessionManagerReactorNettyTcpStompClientspring-doc.cn

Web 服务更改

现在,您可以为实例提供外部配置的实例。WebServiceOutboundGatewayWebServiceTemplatespring-doc.cn

DefaultSoapHeaderMapper现在可以将用户定义的标头映射到 SOAP 标头元素。javax.xml.transform.Sourcespring-doc.cn

Simple WebService 入站和出站网关现在可以将 complete 作为 ,允许操作 MTOM 附件。WebServiceMessagepayloadspring-doc.cn

有关更多信息,请参阅 Web 服务支持spring-doc.cn

Redis 更改

现在为 SPEL 表达式提供了额外的基于 setter 的 setter(为了方便 Java 配置)。 现在,您也可以配置 。 此外,由于 Redis 命令上的选项是可选的,因此此属性已从 更改为 。RedisStoreWritingMessageHandlerStringzsetIncrementExpressionRedisStoreWritingMessageHandlertruefalseINCRZADDspring-doc.cn

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

有关更多信息,请参阅 Redis 支持spring-doc.cn

TCP 更改

我们添加了一个新的 to bind TCP connections to threads。ThreadAffinityClientConnectionFactoryspring-doc.cn

您现在可以配置 TCP 连接工厂以支持实例,让反序列化器在“提前读取”之后“未读”(推回)字节。PushbackInputStreamspring-doc.cn

我们添加了一个 without 来根据需要控制和缓冲传入数据。ByteArrayElasticRawDeserializermaxMessageSizespring-doc.cn

有关更多信息,请参阅 TCP 和 UDP 支持spring-doc.cn

JDBC 更改

现在为 提供了一个 setter,允许您在存储区中自定义消息插入。JdbcMessageChannelStoreChannelMessageStorePreparedStatementSetterspring-doc.cn

现在,它提供了一个 setter,允许您自定义参数的 SQL 类型。ExpressionEvaluatingSqlParameterSourceFactorysqlParameterTypesspring-doc.cn

有关更多信息,请参阅 JDBC 支持spring-doc.cn

指标更改

现在支持千分尺应用程序监控(自版本 5.0.2 起)。 有关更多信息,请参阅 Micrometer 集成spring-doc.cn

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

@EndpointId附注

在版本 5.0.4 中引入,此注释提供了在使用 Java 配置时对 Bean 命名的控制。 有关更多信息,请参见端点 Bean 名称spring-doc.cn