系列第二篇聚焦 Spring 框架核心架構與生態整合能力。(第一篇介紹 Struts/Swing,第三篇 Hibernate,第四篇綜合對比。)
ApplicationContext);| 優勢 | 說明 |
|---|---|
| 有效組織中間層 | 無論是否用 EJB,Spring 管理服務層對象,填補 Struts 等 Web 框架留白 |
| 消除 Singleton 濫用 | 減少全局狀態,提升可測試性與 OO 純度 |
| 統一配置方式 | JavaBean 屬性替代分散的 properties/System.getProperty,IDE 友好 |
| 面向介面編程 | 依賴介面而非實現類,耦合度降至近零 |
| 低 API 侵入 | 業務對象無需繼承 Spring 基類、實現 Spring 接口 |
| 易於單元測試 | POJO 可獨立於容器實例化、注入 Mock 對象測試 |
| EJB 成為選擇而非強制 | POJO + 本地 EJB 靈活切換,調用端無感 |
@Transactional) 替代 EJB 容器事務,單資料源場景無需 JTA;| 領域 | Spring 方案 | 可替換/整合第三方 |
|---|---|---|
| Web MVC | Spring MVC | Struts 1/2, WebWork, JSF, Tapestry |
| 持久化 | JdbcTemplate, HibernateTemplate, JpaTemplate | Hibernate, iBATIS/MyBatis, JDO, TopLink, JPA |
| 事務 | PlatformTransactionManager + AOP | JTA (多資源), 本地事務 (單資源) |
| 消息 | JmsTemplate, @JmsListener | ActiveMQ, RabbitMQ, IBM MQ, JMS 1.1/2.0 |
| 遠程調用 | RMI, Hessian, Burlap, HttpInvoker, JAX-RPC, JAX-WS | Spring Cloud / gRPC / Dubbo (生態擴展) |
| 安全 | Spring Security (原 Acegi) | JAAS, CAS, OAuth2, OpenID Connect |
Spring 的偉大在於「不爭搶、只整合、定標準、降門檻」。它用 IoC/DI 串起碎片化的 Java EE 生態,讓開發者聚焦業務而非基礎設施膠水代碼。