javascript
笔记36 Spring Web Flow——配置
Spring Web Flow是一個Web框架,它適用于元素按規定流程運行的程序。Spring Web Flow是Spring MVC的擴展,它支持開發基于流程的應用程 序。它將流程的定義與實現流程行為的類和視圖分離開來。在介紹Spring Web Flow的時候,我們將暫時放下Spittr樣例并使用生成披薩訂單的新Web應用程序。我們會使用Spring Web Flow來定義訂 單流程。
一、在Spring中配置Web Flow?
Spring Web Flow是構建于Spring MVC基礎之上的。這意味著所有的流 程請求都需要首先經過Spring MVC的DispatcherServlet。我們 需要在Spring應用上下文中配置一些bean來處理流程請求并執行流 程。
現在,還不支持在Java中配置Spring Web Flow,所以我們別無選擇, 只能在XML中對其進行配置。有一些bean會使用Spring Web Flow的 Spring配置文件命名空間來進行聲明。因此,我們需要在上下文定義 XML文件中添加這個命名空間聲明:
1.1 裝配流程執行器
正如其名字所示,流程執行器(flow executor)驅動流程的執行。當 用戶進入一個流程時,流程執行器會為用戶創建并啟動一個流程執行 實例。當流程暫停的時候(如為用戶展示視圖時),流程執行器會在 用戶執行操作后恢復流程。 在Spring中,<flow:flow-executor>元素會創建一個流程執行 器:
盡管流程執行器負責創建和執行流程,但它并不負責加載流程定義。 這個責任落在了流程注冊表(flow registry)身上,接下來我們會創建 它。
1.2 配置流程注冊表
流程注冊表(flow registry)的工作是加載流程定義并讓流程執行器 能夠使用它們。我們可以在Spring中使用<flow:flow-registry> 配置流程注冊表,如下所示:
在這里的聲明中,流程注冊表會在“/WEB-INF/flows”目錄下查找流程 定義,這是通過base-path屬性指明的。依據<flow:flowlocation-pattern>元素的值,任何文件名以“-flow.xml”結尾的 XML文件都將視為流程定義。?
所有的流程都是通過其ID來進行引用的。這里我們使用了 <flow:flow-location-pattern>元素,流程的ID就是相對于 base-path的路徑——或者雙星號所代表的路徑。下圖展示了示例 中的流程ID是如何計算的。
1.3 處理流程請求
?
DispatcherServlet一般將請求分發給 控制器。但是對于流程而言,我們需要一個FlowHandlerMapping 來幫助DispatcherServlet將流程請求發送給Spring Web Flow。 在Spring應用上下文中,FlowHandlerMapping的配置如下:
FlowHandlerMapping裝配了流程注冊表的引用,這 樣它就能知道如何將請求的URL匹配到流程上。然而,FlowHandlerMapping的工作僅僅是將流程請求定向到 Spring Web Flow上,響應請求的 是FlowHandlerAdapter。FlowHandlerAdapter等同于Spring MVC的控制器,它會響應發送的流程請求并對其進行處 理。FlowHandlerAdapter可以像下面這樣裝配成一個Spring bean,如下所示:
?
這個處理適配器是DispatcherServlet和Spring Web Flow之間的 橋梁。它會處理流程請求并管理基于這些請求的流程。在這里,它裝 配了流程執行器的引用,而后者是為所處理的請求執行流程的。
?
?
?
?
?
?
?
?
?
?
?
轉載于:https://www.cnblogs.com/lyj-gyq/p/9100392.html
總結
以上是生活随笔為你收集整理的笔记36 Spring Web Flow——配置的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 类的无参方法和Doc注释
- 下一篇: 【BZOJ3589】动态树