如需使用最新稳定版本,请使用 Spring Integration 7.0.4spring-doc.cadn.net.cn

2.0 与 2.1 版本之间的变更

请参阅 迁移指南,了解可能影响您应用程序的重要变更。spring-doc.cadn.net.cn

新组件

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

JSR-223 脚本支持

在 Spring Integration 2.0 中,我们添加了对 Groovy 的支持。 随着 Spring Integration 2.1 的发布,我们通过实现 JSR-223("Java™ 平台的脚本功能")支持,大幅扩展了对其他语言的支持。 现在您能够使用任何支持 JSR-223 的脚本语言,包括:spring-doc.cadn.net.cn

有关更多详细信息,请参阅脚本支持spring-doc.cadn.net.cn

AMQP 支持

Spring Integration 2.1 添加了多个通道适配器,用于通过 高级消息队列协议 (AMQP) 接收和发送消息。 此外,Spring Integration 还提供了点对点消息通道和发布 - 订阅消息通道,两者均由 AMQP 交换器和队列支持。spring-doc.cadn.net.cn

有关更多详细信息,请参阅 AMQP 支持spring-doc.cadn.net.cn

MongoDB 支持

自2.1版本起,Spring Integration通过提供基于MongoDB的MessageStore支持MongoDBspring-doc.cadn.net.cn

有关更多详细信息,请参阅 MongoDb 支持spring-doc.cadn.net.cn

Redis 支持

自 2.1 版本起,Spring Integration 通过提供基于 Redis 的MessageStore以及发布 - 订阅消息适配器,支持Redis这一高级键值存储。spring-doc.cadn.net.cn

有关更多详细信息,请参见 Redis 支持spring-doc.cadn.net.cn

对 Spring 的资源抽象的支持

在2.1版本中,我们引入了一种新的资源入站通道适配器,它基于Spring的资源抽象构建,以支持更广泛的底层资源类型(如文件、URL或类路径资源)的灵活性。 因此,它与文件入站通道适配器类似,但更加通用。spring-doc.cadn.net.cn

有关更多详细信息,请参阅 资源入站通道适配器spring-doc.cadn.net.cn

存储过程组件

随着 Spring Integration 2.1 的发布,JDBC模块也通过添加多个新组件提供了存储过程支持,包括入站和出站通道适配器以及一个出站网关。 存储过程支持利用了 Spring 的SimpleJdbcCall类,因此支持以下存储过程:spring-doc.cadn.net.cn

存储过程组件还支持以下数据库的 SQL 函数:spring-doc.cadn.net.cn

有关更多详细信息,请参见 存储过程spring-doc.cadn.net.cn

XPath 和 XML 验证过滤器

Spring Integration 2.1 提供了一个基于 XPath 的新消息过滤器。 它是 XML 模块的一部分。 XPath 过滤器允许您使用 XPath 表达式过滤消息。 我们还为 XML 验证过滤器添加了文档。spring-doc.cadn.net.cn

有效负载增强器

自 Spring Integration 2.1 起,我们添加了负载增强器(payload enricher)。 负载增强器定义了一个端点,该端点通常将 Message 传递到暴露的请求通道,然后期望一个回复消息。 随后,该回复消息成为用于评估表达式以增强目标负载的根对象。spring-doc.cadn.net.cn

有关更多详细信息,请参阅 负载增强器spring-doc.cadn.net.cn

FTP 和 SFTP 出站网关

Spring Integration 2.1 提供了两个新的出站网关,用于与远程文件传输协议(FTP)或安全文件传输协议(SFT)服务器进行交互。 这两个网关允许您直接执行一组有限的远程命令。spring-doc.cadn.net.cn

例如,您可以使用这些出站网关来列出、检索和删除远程文件,并使 Spring Integration 消息流继续处理远程服务器的响应。spring-doc.cadn.net.cn

有关更多详细信息,请参阅 FTP 出站网关SFTP 出站网关spring-doc.cadn.net.cn

FTP 会话缓存

从版本 2.1 开始,我们在远程文件适配器(例如 FTP、SFTP 等)的会话管理方面提供了更多的灵活性。spring-doc.cadn.net.cn

具体而言,我们已弃用 cache-sessions 属性(该属性可通过 XML 命名空间支持获得)。 作为替代方案,我们在 CachingSessionFactory 上添加了 sessionCacheSizesessionWaitTimeout 属性。spring-doc.cadn.net.cn

有关更多详细信息,请参阅 FTP 会话缓存SFTP 会话缓存spring-doc.cadn.net.cn

框架重构

我们以多种方式重构了 Spring Integration 框架,所有这些内容都在本节中描述。spring-doc.cadn.net.cn

标准化路由器配置

我们已在 Spring Integration 2.1 中统一了所有路由器实现的路由器参数,以提供更一致的用户体验。spring-doc.cadn.net.cn

在 Spring Integration 2.1 中,我们移除了 ignore-channel-name-resolution-failures 属性,转而将其行为与 resolution-required 属性合并。 此外,resolution-required 属性现在默认为 truespring-doc.cadn.net.cn

从 Spring Integration 2.1 开始,如果未定义默认输出通道,路由器将不再静默丢弃任何消息。 这意味着,默认情况下,路由器现在要求至少解析一个通道(如果未设置default-output-channel),并且如果没有确定通道(或发送尝试不成功),默认将抛出MessageDeliveryException异常。spring-doc.cadn.net.cn

然而,如果您确实希望静默丢弃消息,可以将值设置为 default-output-channel="nullChannel"spring-doc.cadn.net.cn

随着路由参数的标准化以及前述参数的整合,基于旧版 Spring Integration 的应用程序可能会出现故障。

有关更多详细信息,请参阅Routersspring-doc.cadn.net.cn

XML Schemas updated to 2.1

Spring Integration 2.1 附带了更新后的 XML Schema(版本 2.1)。 它提供了许多改进,例如前面讨论过的 Router 标准化 discussed earlierspring-doc.cadn.net.cn

从现在开始,开发人员必须始终声明最新的 XML 架构(当前版本为 2.1)。 或者,他们也可以使用无版本号的架构。 通常,最佳选项是使用无版本号的命名空间,因为这些会自动使用 Spring Integration 中可用的最新版本。spring-doc.cadn.net.cn

以下示例声明了一个无版本的 Spring Integration 命名空间:spring-doc.cadn.net.cn

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
   xmlns:int="http://www.springframework.org/schema/integration"
   xsi:schemaLocation="http://www.springframework.org/schema/integration
           https://www.springframework.org/schema/integration/spring-integration.xsd
           http://www.springframework.org/schema/beans
           https://www.springframework.org/schema/beans/spring-beans.xsd">
...
</beans>

以下示例声明了一个具有显式版本的 Spring Integration 命名空间:spring-doc.cadn.net.cn

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
   xmlns:int="http://www.springframework.org/schema/integration"
   xsi:schemaLocation="http://www.springframework.org/schema/integration
           https://www.springframework.org/schema/integration/spring-integration-2.2.xsd
           http://www.springframework.org/schema/beans
           https://www.springframework.org/schema/beans/spring-beans.xsd">
...
</beans>

旧的 1.0 和 2.0 模式仍然存在。 然而,如果应用程序上下文仍然引用这些已弃用的模式之一,则验证器在初始化时会失败。spring-doc.cadn.net.cn

源代码版本控制与构建基础设施

版本 2.1 引入了对源代码控制管理和构建基础设施的一系列更改。 本节将介绍这些更改。spring-doc.cadn.net.cn

源代码现托管于 GitHub

自 2.0 版本起,Spring Integration 项目使用 Git 进行版本控制。 为了进一步提高社区的可见度,该项目已从 SpringSource 托管的 Git 仓库迁移至 Github。 Spring Integration 的 Git 仓库位于:spring-integrationspring-doc.cadn.net.cn

对于该项目,我们也改进了提供代码贡献的流程。 此外,我们确保每次提交都经过同行评审。 事实上,核心维护者现在也遵循与贡献者相同的流程。 更多详情,请参阅 贡献指南spring-doc.cadn.net.cn

使用 Sonar 提升源代码可见性

为了提供更好的源代码可见性,从而监控 Spring Integration 源代码的质量,我们搭建了一个 Sonar 实例。 我们每晚收集指标,并在 sonar.spring.io 上提供这些指标。spring-doc.cadn.net.cn

新示例

对于 Spring Integration 的 2.1 版本,我们还扩展了 Spring Integration Samples 项目,并添加了许多新示例,例如涵盖 AMQP 支持的示例、展示新负载增强器的示例、说明测试 Spring Integration 流程片段技术的示例,以及针对 Oracle 数据库执行存储过程的示例。 详细信息请访问 spring-integration-samplesspring-doc.cadn.net.cn