Spring Web Flow 下一代版本的首個里程碑釋出

釋出 | Keith Donald | 2007 年 8 月 28 日 | ...

致 Spring 社群,

我們很高興地宣佈,Spring Web Flow 下一代版本的首個里程碑現已釋出。  Spring Web Flow 2.0 M1 引入了幾項主要新功能,包括對流管理的持久化上下文的支援、對 Java Server Faces 的改進支援、完整的統一表達式語言 (EL) 支援,以及一個更全面的示例 Web 應用

 

Spring Web Flow 2.0 是一個用於開發 Java Web 應用控制器的下一代框架。  該框架提供了一個統一的執行時環境,用於在各種環境中執行無狀態有狀態的客戶端互動。

Web Flow 2.0 版本目標

如今,大多數應用開發者使用 Spring Web Flow 來實現線性頁面流,例如嚮導,方法是將 Web Flow 接入到他們的“基礎”Web 框架中,如 Spring MVC。  這類頁面流呈現出線性的導航規則,是有狀態的,並構成了 Web 應用功能的動態、自包含模組。  一個很好的例子是貸款申請流程:Web Flow 獨特的流程定義語言為實現這類流程提供了一種自然的程式設計模型。

Spring Web Flow 2.0 的總體目標是正式將該產品從今天的形態(主要用於實現線性向導的框架)發展到其一直被設計的目標:一個為所有型別客戶端互動提供支援的通用應用控制器引擎。  這類互動包括嚮導、無狀態的“RESTful”互動,以及 Web 2.0 應用中常見的更細粒度、非線性/非同步的互動。

Spring Web Flow 2.0 將為 Spring 社群提供一個統一的應用控制器框架和執行時環境,適用於執行所有型別的客戶端互動,並能夠整合各種檢視渲染技術和 UI 元件模型。  這個統一的執行時環境將能夠一致地應用管理工具、安全、AJAX 和託管持久化等獨特功能。

檢視完整的 Spring Web Flow 2.0 路線圖

Web Flow 2.0 M1 新特性與重要事項

首個 2.0 釋出里程碑引入了幾項通往 2.0 正式版的重大新功能。  這些功能如下所述。 

使用 JPA 和 Hibernate 的流管理持久化上下文

Spring Web Flow 2.0 M1 引入了對使用 Hibernate 和 JPA 的流管理持久化上下文的支援。  該版本包含的新的 酒店預訂示例應用 展示了這一功能。  以下是其在預訂示例中的工作方式

  • 當一個新的酒店預訂流程開始時,會自動為您建立一個持久化上下文。
  • 隨著您在流程中前進,持久化上下文會自動用於所有資料訪問操作。   您無需擔心定位與流繫結的 EntityManager 例項,也無需以任何方式對其進行管理。
  • 當您授權預訂時,所有對託管持久化實體的更改都會自動提交併重新整理回資料庫。  如果您選擇取消預訂,則您的任何更改都不會提交。

此酒店預訂流程的圖形化 Spring IDE 檢視如下所示

預訂流程 

改進的 Java Server Faces (JSF) 支援

Spring Web Flow 2.0 M1 引入了 Spring Faces 模組 (spring-faces-2.0-m1.jar),這是隨 Web Flow 分發包附帶的一個元件,包含對使用 Java Server Faces 開發 Web 應用的組織的一流支援。  現有的 Web Flow + JSF 整合已被提取到此專案中,該專案將成為所有未來 JSF 整合工作的中心。

Spring Faces 模組為 Spring 社群提供了一個專門的專案,用於探索額外的 JSF 整合機會。  2.0 M1 中的初步工作引入了與 Ext 的整合,Ext 是一個流行的 Javascript GUI 小部件框架。  提供了幾個輕量級的 JSF UI 元件,用於封裝富 Ext 小部件的渲染。  我們採取的方法允許 Ext 小部件裝飾標準的 JSF 元件,新增類似桌面的外觀和額外的 UI 行為,例如客戶端驗證。  2.0 M1 中提供了以下 Ext 元件裝飾器

  • 一個日期驗證器元件,對日期文字欄位執行豐富的客戶端驗證,並帶有外觀精美的日期選擇器控制元件。
  • 一個文字驗證器,對自由格式文字輸入欄位執行豐富的客戶端驗證。
  • 一個數字驗證器,對數字文字欄位執行豐富的客戶端驗證。

日期驗證器控制元件的螢幕截圖,也用於酒店預訂示例應用中,如下所示

 

Ext 控制元件看起來很棒,並且由於所有 UI 行為都在客戶端執行,UI 的響應性非常出色。  在未來的 Web Flow 釋出里程碑中,我們將作為 Spring Faces 模組的一部分,在此領域新增進一步的支援。

擁有一個專門的 Spring Faces 模組也簡化了在 JSF 環境中設定 Spring Web Flow 的過程。  在 2.0 M1 之前,開發者需要手動修改 faces-config.xml 來設定樣板式的 Spring/SWF 整合管道。  有了 2.0 M1,只需在類路徑中包含 spring-faces-2.0-m1.jar 即可自動完成此設定。

統一表達式語言 (EL) 支援

此版本的新功能還包括對統一 EL 的全面支援,它提供了 Spring Web Flow 中當前預設使用的基於 OGNL 的表示式解析器的替代方案。  現在建議在 JSF 環境中使用統一 EL,並且在未來的里程碑中將成為 JSF 開發者的預設選項。

酒店預訂流程定義中使用的 EL 表示式示例如下所示: 

 

上面的“id”表示式評估儲存在 Flow Scope 中的當前酒店識別符號。  注意,這裡不需要任何明確的 flowScope 字首。  開發者只需按名稱引用變數,ELExpressionEvaluator 會透過搜尋各種作用域來解析變數。  這使得 Web Flow 定義中的託管 bean 引用與用於模型繫結表示式的 JSF 檢視中的引用 100% 一致。  例如,請參閱 bookingForm.xhtml 檢視中的以下程式碼片段

 

2.0 釋出說明

Spring Web Flow 2.0 需要 Spring 2.0 或更高版本以及 Java 1.4 或更高版本。

Spring Web Flow 2.0 將盡可能保持與 1.0.x 基於 XML 的流程定義語言的向後相容性。  預計在未來的 Web Flow 2.x 里程碑中,隨著 Web Flow 演變為一個完整的控制器框架,一些 SWF SPI 將會發生變化。

Spring Web Flow 2.0 未來的里程碑將引入新的方言,用於在實際程式語言中定義流程,為當前基於 XML 的流程定義語法提供更強大的替代方案。  基於 POJO 的 Java 流程定義語法正在開發中,同時也在開發基於 Groovy 的方法。  此外,還將引入用於實現 REST-ful 和 CRUD 流程的高階流程方言。  因為 Web Flow 定義 API 和執行執行時與任何具體的流程定義語法是分開的,所以我們可以自然地引入新的語法,以不同的方式在執行時構建應用控制器。

對於 JSF 使用者,Spring Web Flow 2.0 和 Spring Faces 可在 JSF 1.1 和 JSF 1.2 上執行。  Spring Faces 模組中的 UI 元件庫獨立於 Web Flow 執行時,也可與 JSF 的預設導航處理器一起使用。

Spring Web Flow 2.0 將繼續全面支援 Servlet 2.4 或更高版本、Portlet 1.0 或更高版本以及 JUnit 3.8.1 或更高版本的環境。 

Spring Web Flow 2.0 將繼續在 Struts 1.2 或更高版本以及 Spring MVC 2.0 或更高版本的環境中執行,並且在 2.0 正式版釋出時,它也將可用作獨立的 Web 應用控制器框架。

獲取 Spring 新聞通訊

訂閱 Spring 新聞通訊,保持聯絡

訂閱

搶佔先機

VMware 提供培訓和認證,助您加速發展。

瞭解更多

獲取支援

Tanzu Spring 透過一項簡單的訂閱提供 OpenJDK™、Spring 和 Apache Tomcat® 的支援和二進位制檔案。

瞭解更多

即將舉辦的活動

檢視 Spring 社群所有即將舉辦的活動。

檢視全部