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 Filter 和 XML 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 Gateway 和 SFTP Outbound Gateway 。
FTP Session Caching
从版本 2.1 开始,我们引入了更多灵活的管理远程文件适配器(例如,FTP、SFTP 等)的会话的方式。
具体来说,我们弃用了 cache-sessions
属性(可通过 XML 命名空间支持获得)。作为替代,我们在 CachingSessionFactory
上添加了 sessionCacheSize
和 sessionWaitTimeout
属性。
有关更多详细信息,请参见 FTP Session Caching 和 SFTP 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 。