Changes between 2.0 and 2.1

请参阅 Migration Guide 以了解可能影响您应用程序的重要更改。

New Components

2.1 版本增加了许多新组件。

JSR-223 Scripting Support

在 Spring Integration 2.0 中,我们增加了对 Groovy的支持。在 Spring Integration 2.1 中,我们在实施了对 JSR-223的支持 (“Scripting for the Java™ Platform”) 后,大幅增加了对其他语言的支持。现在您可以使用支持 JSR-223 的任何脚本语言,包括:

  • Javascript

  • Ruby and JRuby

  • Python and Jython

  • Groovy

有关更多详细信息,请参见 Scripting Support

AMQP Support

Spring Integration 2.1 增加了一些用于通过使用 Advanced Message Queuing Protocol(AMQP)接收和发送消息的通道适配器。此外,Spring Integration 还提供点对点消息通道和发布-订阅消息通道,它们均由 AMQP Exchanges 和 Queues 提供支持。

有关更多详细信息,请参见 AMQP Support

MongoDB Support

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

有关更多详细信息,请参见 MongoDb Support

Redis Support

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

有关更多详细信息,请参见 Redis Support

Support for Spring’s Resource abstraction

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

有关详细信息,请参见 Resource Inbound Channel Adapter

Stored Procedure Components

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

  • Apache Derby

  • DB2

  • MySQL

  • Microsoft SQL Server

  • Oracle

  • PostgreSQL

  • Sybase

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

  • MySQL

  • Microsoft SQL Server

  • Oracle

  • PostgreSQL

有关更多详细信息,请参见 Stored Procedures

XPath and XML Validating Filter

Spring Integration 2.1 提供了一个基于 XPath 的新消息过滤器。它是“XML”模块的一部分。借助 XPath 过滤器,您可以使用 XPath 表达式过滤消息。我们还增加了 XML 验证过滤器的文档。

有关更多详细信息,请参见 Using the XPath FilterXML Validating Filter

Payload Enricher

从 Spring Integration 2.1 开始,我们增加了有效负载增强器。有效负载增强器定义了一个端点,该端点通常将 Message传递给公开的请求通道,然后期望接收回复消息。然后回复消息成为用于评估表达式以增强目标有效负载的根对象。

有关详细信息,请参见 Payload Enricher

FTP and SFTP Outbound Gateways

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

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

有关更多详细信息,请参见 FTP Outbound GatewaySFTP Outbound Gateway

FTP Session Caching

从版本 2.1 开始,我们引入了更多灵活的管理远程文件适配器(例如,FTP、SFTP 等)的会话的方式。

具体来说,我们弃用了 cache-sessions 属性(可通过 XML 命名空间支持获得)。作为替代,我们在 CachingSessionFactory 上添加了 sessionCacheSizesessionWaitTimeout 属性。

有关更多详细信息,请参见 FTP Session CachingSFTP Session Caching

Framework Refactoring

我们在多个方面重新设计了 Spring Integration 框架,这些内容在本部分全部进行了描述。

Standardizing Router Configuration

我们在 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"

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

有关更多详细信息,请参见 Routers

XML Schemas updated to 2.1

Spring Integration 2.1 包含一个更新的 XML Schema(2.1 版)。它提供了许多改进,例如路由器标准化 discussed earlier

从现在开始,开发人员必须始终声明最新的 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>

以下示例声明了一个具有显式版本的 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>

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

Source Control Management and Build Infrastructure

版本 2.1 为源代码管理和构建基础设施引入了一些更改。本部分涵盖了这些更改。

Source Code Now Hosted on Github

从 2.0 版本开始,Spring 集成项目使用 Git 进行版本控制。为了进一步提高社区影响力,该项目已从 SpringSource 托管 Git 存储库迁移到 Github 。Spring 集成 Git 存储库位于: spring-integration

对于该项目,我们还改进了提供代码贡献的过程。此外,我们确保每项提交都会进行同行评审。事实上,核心提交者现在遵循与贡献者相同的过程。有关更多详细信息,请参见 Contributing

Improved Source Code Visibility with Sonar

为了更好地提供源代码可见性,并因此监视 Spring 集成的源代码质量,我们设置了 Sonar 实例。我们每晚收集指标,并使其在 sonar.spring.io 处可用。

New Samples

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