Spring 是一個分層架構的輕量級框架,意味著你可以按需選用模組(如僅用 JDBC 模組、或僅用 IOC 容器管理業務物件),模組間內部相容,學習曲線平緩,價值最大化。
| 痛點 | Spring 解決方案 |
|---|---|
| 中間層物件管理混亂 | IOC 容器統一裝配、生命週期管理、依賴注入,無論是否用 EJB |
| 大量 Singleton 導致難測試、破壞 OO | IOC 取代 Singleton,依賴注入天然支援單元測試 |
| 屬性檔案分散、查找困難 | 統一配置機制,JavaBean 屬性化,一眼可見 |
| 硬編碼耦合具體類 | 介面導向編程,降低耦合,interface 替換 class |
| API 過重、業務物件強綁框架 | 極少 API 依賴,業務 POJO 無需繼承/實作 Spring 類 |
| 單元測試困難 | POJO 即可測試,容器外也能跑 |
| EJB 強制性決策 | EJB 變為「選項」而非「強制」,POJO / Local EJB 靈活切換 |
| 無 EJB 環境下的聲明式交易 | AOP 提供聲明式交易管理,無需 EJB 容器 |
| 單資料庫場景不想用 JTA | 本地交易支援,無需 JTA 開銷 |
| JDBC/O/R Mapping 切換痛苦 | 統一資料存取抽象,無縫切換 JDBC、Hibernate、iBATIS、JDO |
Spring 的設計哲學:**以最小侵入性、最大靈活性,解決企業級開發中的普遍痛點**。它不強迫你遵循特定模式,而是提供工具箱讓你**選擇最適合的架構決策**。