跳到主要内容

2.0 和 2.1 之间的变更

QWen Plus 中英对照 Changes between 2.0 and 2.1

请参阅 迁移指南 ,了解可能影响您应用程序的重要变更。

新组件

版本 2.1 添加了许多新的组件。

JSR-223 脚本支持

在 Spring Integration 2.0 中,我们添加了对 Groovy 的支持。通过 Spring Integration 2.1,我们通过实现对 JSR-223(“Java™ 平台的脚本编程”)的支持,大大扩展了对其他语言的支持。现在你可以使用任何支持 JSR-223 的脚本语言,包括:

  • Javascript

  • Ruby 和 JRuby

  • Python 和 Jython

  • Groovy

有关详细信息,请参阅脚本支持

AMQP 支持

Spring Integration 2.1 添加了多个通道适配器,用于通过 高级消息队列协议 (AMQP) 接收和发送消息。此外,Spring Integration 还提供了一个点对点消息通道和一个发布 - 订阅消息通道,这两个通道都由 AMQP Exchange 和 Queue 支持。

对于更多详情,请参阅 AMQP 支持

MongoDB 支持

从 2.1 版开始,Spring Integration 通过提供基于 MongoDB 的 MessageStore 来支持 MongoDB

对于更多详情,请参见 MongoDb 支持

Redis 支持

从 2.1 版本开始,Spring Integration 通过提供基于 Redis 的 MessageStore 以及发布订阅消息适配器来支持 Redis,这是一种高级键值存储。

对于更多详情,请参见 Redis 支持

对 Spring 的 Resource 抽象的支持

在 2.1 版中,我们引入了一种新的资源入站通道适配器,它基于 Spring 的资源抽象,以支持各种实际类型的底层资源(如文件、URL 或类路径资源)更大的灵活性。因此,它类似于文件入站通道适配器,但更加通用。

对于更多详情,请参阅资源入站通道适配器

存储过程组件

从 Spring Integration 2.1 开始,JDBC 模块通过添加几个新的组件提供了存储过程支持,包括入站和出站通道适配器以及一个出站网关。存储过程支持利用了 Spring 的 SimpleJdbcCall 类,因此支持以下存储过程:

  • Apache Derby

  • DB2

  • MySQL

  • Microsoft SQL Server

  • Oracle

  • PostgreSQL

  • Sybase

存储过程组件还支持以下数据库的 SQL 函数:

  • MySQL

  • Microsoft SQL Server

  • Oracle

  • PostgreSQL

有关详细信息,请参阅 存储过程

XPath 和 XML 验证过滤器

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

有关更多详细信息,请参阅 使用 XPath 过滤器XML 验证过滤器

负载增强器

自从 Spring Integration 2.1,我们添加了负载丰富器。一个负载丰富器定义了一个端点,通常将 Message 传递给暴露的请求通道,然后期望一个回复消息。然后,回复消息成为用于评估表达式以丰富目标负载的根对象。

对于更多详细信息,请参阅 有效负载丰富器

FTP 和 SFTP 外发网关

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

例如,您可以使用这些出站网关列出、检索和删除远程文件,并使 Spring Integration 消息流根据远程服务器的响应继续。

有关更多详细信息,请参阅 FTP 外发网关SFTP 外发网关

FTP 会话缓存

从 2.1 版开始,我们为远程文件适配器(例如,FTP、SFTP 等)的会话管理提供了更多的灵活性。

具体来说,我们废弃了 cache-sessions 属性(该属性通过 XML 命名空间支持提供)。作为替代,我们在 CachingSessionFactory 中添加了 sessionCacheSizesessionWaitTimeout 属性。

有关详细信息,请参阅 FTP 会话缓存SFTP 会话缓存

框架重构

我们以多种方式重构了 Spring Integration 框架,所有这些都在本节中有所描述。

标准化路由器配置

我们在 Spring Integration 2.1 中统一了所有路由器实现的路由器参数,以提供更一致的用户体验。

在 Spring Integration 2.1 中,我们移除了 ignore-channel-name-resolution-failures 属性,转而将其行为整合到 resolution-required 属性中。此外,resolution-required 属性现在默认为 true

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

但是,如果你想静默丢弃消息,你可以设置 default-output-channel="nullChannel"

important

随着路由器参数的标准化和前面描述的参数的整合,较旧的基于 Spring Integration 的应用程序可能会中断。

对于更多详情,参见 [路由器](router/index.md)

XML 模式更新为 2.1

Spring Integration 2.1 带来了更新的 XML Schema(版本 2.1)。它提供了许多改进,例如前面讨论的 Router 标准化前面讨论过的

从现在起,开发人员必须始终声明最新的 XML 模式(当前版本为 2.1)。或者,他们可以使用无版本的模式。通常,最好的选择是使用无版本的命名空间,因为这些会自动使用最新版本的 Spring Integration。

以下示例声明了一个没有版本的 Spring Integration 命名空间:

<?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>
xml

以下示例声明了一个带有显式版本的 Spring Integration 命名空间:

<?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>
xml

旧的 1.0 和 2.0 模式仍然存在。但是,如果应用程序上下文仍然引用其中一个已弃用的模式,则验证器在初始化时会失败。

源代码控制管理和构建基础设施

版本 2.1 对源代码控制管理和构建基础设施进行了一系列更改。本节将介绍这些更改。

源代码现托管在 Github

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

对于该项目,我们还改进了提供代码贡献的流程。进一步地,我们确保每一个提交都经过同行评审。实际上,核心提交者现在遵循与贡献者相同的流程。更多详情,请参见 贡献指南

使用 Sonar 提高源代码可见性

为了更好地提供源代码可见性,并进而监控 Spring Integration 源代码的质量,我们设置了一个 Sonar 实例。我们每晚收集指标,并将它们发布在 sonar.spring.io

新示例

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