一、 Struts 1.x:首個標準化MVC Web框架
架構四大組件
- 模型:
Action類承載業務邏輯,struts-config.xml控制請求轉發
- 視圖:JSP+Struts標籤庫(HTML/Bean/Logic/Nested/Tiles)快速構建界面
- 控制器:
ActionServlet統一入口,請求分發核心
- XML工具包:Digester解析配置,支援國際化資源包管理
Struts確立了Java Web開發的MVC範式,但配置繁重、強依賴Servlet API、測試困難等痛點催生了下一代框架。
二、 Spring:輕量級全棧整合框架
核心哲學:IoC容器與AOP雙引擎
- IoC(控制反轉/依賴注入):容器管理對象生命週期與依賴關係,實現「高層不依賴低層,共同依賴抽象」。支援構造器/Setter/介面注入。
- AOP(面向切面編程):橫切關注點(事務、日誌、安全)模組化,聲明式織入,業務代碼零侵入。
架構優勢七大支柱
- 高效組織中間層對象,補齊Struts/EJB遺留問題
- 消除Singleton濫用,提升可測試性與OO特性
- 統一配置方式,告別屬性文件關鍵字地獄
- 面向介面編程,耦合度降至近零
- 低侵入性:業務對象無感知Spring存在,易脫離/接入
- 單元測試友好:POJO即可測試
- EJB成為選擇而非強制:POJO/Local EJB無縫切換
模組化設計(七大核心模組)
- Core Container:
BeanFactory實現IoC核心
- Spring Context:JNDI/EJB/郵件/調度等企業服務整合
- Spring AOP:切面編程與聲明式事務
- Spring DAO:JDBC異常層次統一
- Spring ORM:Hibernate/iBatis/JDO無縫整合
- Spring Web:Web上下文、Struts整合、文件上傳
- Spring MVC:策略介面設計,支援JSP/Velocity/Tiles/iText/POI
實戰價值
- 抽象事務策略(JTA/本地事務統一API)
- 不重複造輪子:日誌用Commons Logging,連接池用Commons DBCP
- 跨應用服務器可移植:WebLogic/Tomcat/Resin/JBoss/WebSphere
- 可選MVC方案:內建Spring MVC或整合Struts/WebWork
三、 Hibernate:對象關係映射標杆
核心工作模式
- XML映射文檔描述類-表關聯
- 運行時動態生成字節碼子類攔截get/set實現延遲加載/髒檢查
- 直觀API:對象操作自動同步資料庫,
save()/update()/delete()語義清晰
適用場景判斷矩陣
| 場景 | 推薦方案 |
| 極簡配置存儲(用戶偏好) | Java Preferences API |
| DBA主導、複雜存儲過程、SQL性能極致追求 | iBATIS(SQL中心) |
| 企業強制EJB/CMP架構 | 遵循架構規範 |
| 豐富領域模型、靈活持久化、資料庫可選 | Hibernate(ORM標杆) |
遷移優勢
資料庫廠商變更僅需修改配置文件方言與驅動,業務代碼零修改。工具鏈支援:正向生成DDL、反向生成實體/映射、Eclipse插件可視化編輯。
四、 Swing:第二代跨平台GUI工具包
- 構建於AWT之上,純Java實現,非平台原生Peer
- 豐富組件庫:
JTable、JTree、JComboBox等
- 採用MVC設計模式,
JComponent繼承Container,所有組件均為容器
- 可插拔Look & Feel,支援Metal/Nimbus/系統原生外觀
雖然JavaFX已成主流,Swing在存量系統維護與嵌入式場景仍具不可替代價值。