首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> Java 程式設計 >> Java 相關知識

Spring Web Flow 2.0 核心配置深度解析:FlowRegistry、FlowExecutor、FlowController 整合原理

     編輯:Java 相關知識

三大核心組件架構

1. FlowRegistry - 流程倉庫

存儲解析後的 FlowDefinition,每個 Flow 唯一 ID 標識。

<webflow:flow-registry id="flowRegistry" flow-builder-services="flowBuilderServices">
    <webflow:flow-location path="/WEB-INF/flows/shopping.xml" id="shopping"/>
</webflow:flow-registry>
  • ID 缺省為文件名(去擴展名)
  • flow-builder-services:配置 Flow 構建特性(EL、轉換器、視圖工廠)

2. FlowExecutor - 執行引擎

核心接口,負責啟動/恢復 Flow 執行。

<webflow:flow-executor id="flowExecutor"/>

默認行為足夠大多數場景。

3. FlowController - MVC 整合適配器

將 HTTP 請求轉為 Flow 執行請求。

<bean id="flowController" class="org.springframework.webflow.mvc.servlet.FlowController">
    <property name="flowExecutor" ref="flowExecutor"/>
</bean>

請求流轉機制

HTTP Request (/shopping.do)
    ↓
DispatcherServlet
    ↓
SimpleUrlHandlerMapping (匹配 /shopping.do → flowController)
    ↓
FlowController
    ↓
從請求路徑提取 Flow ID ("shopping")
    ↓
FlowRegistry 查找 FlowDefinition
    ↓
FlowExecutor 執行 Flow
    ↓
返回 View 名稱
    ↓
ViewResolver 解析視圖資源
    ↓
HTTP Response

Flow ID 解析規則

  • 請求 /shopping.do、/shopping、/shopping.htm 均提取 ID shopping
  • 對應 flow-registry 中 id="shopping" 的 Flow

FlowBuilder Services - 視圖整合關鍵

<webflow:flow-builder-services id="flowBuilderServices" 
    view-factory-creator="mvcViewFactoryCreator"/>

<bean id="mvcViewFactoryCreator" class="org.springframework.webflow.mvc.builder.MvcViewFactoryCreator">
    <property name="viewResolvers" ref="viewResolver"/>
</bean>

作用:Flow 中的視圖名交由 Spring MVC 的 ViewResolver 解析,實現視圖技術統一。

兩種 Handler 方案對比

方案FlowHandler 接口FlowController 類
靈活性高(完全自定義)固定邏輯
開發量每個 Flow 需實現零代碼,僅配置
適用場景複雜啟動邏輯、參數預處理標準流程啟動

教程採用 FlowController 簡化開發。

配置總結

所有配置服務於兩大目標:

  1. 客戶請求 → Flow 執行請求
  2. Flow 執行過程/結束視圖 → 客戶響應
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved