2.0 和 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 交換機和佇列支援。
有關更多詳細資訊,請參閱 AMQP 支援。
MongoDB 支援
從 2.1 版本開始,Spring Integration 透過提供基於 MongoDB 的 MessageStore 來支援 MongoDB。
有關更多詳細資訊,請參閱 MongoDb 支援。
Redis 支援
從 2.1 版本開始,Spring Integration 透過提供基於 Redis 的 MessageStore 以及釋出-訂閱訊息介面卡來支援 Redis,這是一種高階鍵值儲存。
有關更多詳細資訊,請參閱 Redis 支援。
支援 Spring 的資源抽象
在 2.1 版本中,我們引入了一個新的資源入站通道介面卡,它基於 Spring 的資源抽象,以支援各種實際底層資源型別(例如檔案、URL 或 classpath 資源)的更大靈活性。因此,它與檔案入站通道介面卡類似,但更通用。
有關更多詳細資訊,請參閱 資源入站通道介面卡。
儲存過程元件
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) 或安全檔案傳輸協議 (SFTP) 伺服器進行互動。這兩個閘道器允許您直接執行有限的遠端命令集。
例如,您可以使用這些出站閘道器列出、檢索和刪除遠端檔案,並讓 Spring Integration 訊息流繼續處理遠端伺服器的響應。
有關更多詳細資訊,請參閱 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"。
| 隨著路由器引數的標準化和前面描述的引數的合併,較舊的基於 Spring Integration 的應用程式可能會中斷。 |
有關更多詳細資訊,請參閱 路由器。
XML 模式更新到 2.1
Spring Integration 2.1 附帶了更新的 XML 模式(版本 2.1)。它提供了許多改進,例如前面討論的路由器標準化。
從現在開始,開發人員必須始終宣告最新的 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 模式仍然存在。但是,如果應用程式上下文仍然引用其中一個已棄用的模式,則驗證器會在初始化時失敗。
原始碼管理和構建基礎設施
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。