Servlet 范圍的三大痛點
| 范圍 | 生命周期 | 痛點 |
| Request | 單次請求 | 數據跨請求丟失,不適合多步驟流程 |
| Session | 用戶會話 | 數據過久不釋放,分布式同步難,內存壓力大 |
| Application | 應用全局 | 僅適合真正全局共享數據 |
現實需求:比 Request 長、比 Session 短的會話級范圍。
Spring Web Flow 獨創範圍
- Flow Scope:Flow 啟動創建,結束銷毀,通過
flowScope 訪問
- Conversation Scope:包含主 Flow 及所有 Subflow,跨子流程共享數據
開發者自定義 Flow 邊界,完全突破 Servlet 範圍限制。
何時使用 Spring Web Flow - 官方選型表
| 場景 | 推薦方案 |
| 單頁面、少邏輯、非流程一部分 | Spring MVC Controller |
| 單純表單提交(如搜索框) | SimpleFormController |
| 向導式多頁面導航 | AbstractWizardFormController |
| 複雜、有狀態、多頁面跳轉業務流程 | Spring Web Flow |
核心優勢總結
- 流程抽象層:從頁面跳轉上升到業務流程建模,可直接從用例模型轉換
- 流程復用:支持 Flow 繼承、Subflow 調用(類似函數調用)
- 狀態管理:自動處理 Flow/Conversation 範圍數據生命周期
- 技術整合:深度整合 Spring MVC、JSF、Spring Security、Ajax
不適用場景
- 簡單 CRUD 操作
- 無狀態 REST API
- 性能極度敏感、無法承擔流程引擎開銷的系統
- 團隊缺乏流程建模經驗,強行引入反增複雜度
遷移建議
漸進式採用:核心業務流程(訂單、審批、向導)使用 SWF,其餘保持 MVC Controller。評估團隊學習曲線與項目複雜度匹配度。
- 上一篇文章: Spring Web Flow 2.0 入門實戰(六):購物車流程完整配置與運行
- 下一篇文章: Spring Web Flow 2.0 入門基礎(二):Spring Web MVC 環境搭建完整步驟
Copyright ©
程式碼之家 All Rights Reserved