存儲解析後的 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>
flow-builder-services:配置 Flow 構建特性(EL、轉換器、視圖工廠)核心接口,負責啟動/恢復 Flow 執行。
<webflow:flow-executor id="flowExecutor"/>
默認行為足夠大多數場景。
將 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
/shopping.do、/shopping、/shopping.htm 均提取 ID shoppingflow-registry 中 id="shopping" 的 Flow<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 解析,實現視圖技術統一。
| 方案 | FlowHandler 接口 | FlowController 類 |
|---|---|---|
| 靈活性 | 高(完全自定義) | 固定邏輯 |
| 開發量 | 每個 Flow 需實現 | 零代碼,僅配置 |
| 適用場景 | 複雜啟動邏輯、參數預處理 | 標準流程啟動 |
教程採用 FlowController 簡化開發。
所有配置服務於兩大目標: