首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> Java 程式設計 >> Java 相關知識

踐行 EJB 與 Spring 組件化思想:構建可持續演進的軟體產業

     編輯:Java 相關知識

軟體業「低水平重複」的根源剖析

從 DOS 時代的 FoxBase 財務系統、Windows 時期的 VB/PB 重寫、B/S 架構再重寫、到 RIA 浪潮又一次重寫——中國軟體產業長期陷入「技術更迭即全盤重寫」的惡性循環。這不僅是資源浪費,更導致領域知識流失、業務與技術脫節、人才成長斷層。

核心癥結:應用系統規範性太低、耦合度太高。作業系統能支撐萬種軟體演進,為什麼我們的應用適應不了單一企業的變化?

組件化演進脈絡:COM → CORBA → EJB → Spring → EJB 3

階段代表技術核心貢獻局限
早期探索COM / CORBA確立二進制元件介面、跨語言互操作平台鎖定、複雜度高、部署困難
企業級標準化EJB 1.x/2.x強制分層、聲明式交易/安全、容器管理生命週期過度設計、入門門檻高、測試困難
輕量級反叛Spring FrameworkIOC/DI 解耦、AOP 切面、POJO 程式模型、簡化測試早期 XML 地獄、無標準規範
標準回歸EJB 3 / JPA / CDI註解驅動、極簡 API、整合 JPA、標準化 CDI容器啟動慢、生態相對封閉

Spring 的本質:EJB 思想的繼承與簡化

Rod Johnson 基於多年 EJB 實戰經驗創造 Spring,並非否定 EJB,而是提煉其精華 (IOC、AOP、聲明式交易) 去除其糟粕 (重型容器、實體 Bean、遠端介面強制)。盲目崇拜 Spring 簡化而忽視組件化解耦本質,是許多團隊淪為「配置工程師」的根源。

組件化落地的六大鐵律

  1. 高內聚、低耦合:單一職責原則 (SRP) 貫徹到模組、類別、方法每一層
  2. 介面導向設計:依賴抽象而非實作,Spring `@Autowired` 注入介面
  3. 無侵入式框架整合:業務邏輯零 Spring 依賴,純 POJO 可獨立單元測試
  4. 模組化封裝:成熟代碼打包為 Jar/War,發布至私有 Maven 倉庫,跨專案複用
  5. 契約優於實作:服務介面版本化、向後相容、文檔化 (Swagger/OpenAPI)
  6. 自動化品質門檻:CI 流程強制單元測試覆蓋率、靜態分析、依賴掃描

軟體工業化:從「作坊」到「產業鏈」

汽車工業:橡膠、鋼鐵、引擎、車身、電子系統——專業分工、標準化介面、大規模協作。軟體業同理:

  • 基礎設施層:OS、JVM、資料庫、中間件 (廠商提供)
  • 通用元件層:日誌、快取、安全、序列化、監控 (開源/商業元件)
  • 業務能力層:訂單、庫存、支付、用戶中心 (領域驅動設計建模)
  • 應用組合層:Web/App/API Gateway 組合業務能力對外服務

角色責任重新定義

角色錯誤行為正確踐行
程式設計師複製貼上、忽視設計、追逐新框架精進設計模式、重構債務、建立元件庫
開發商/ISV專案制交付、無產品化、客製化泛濫提煉產品線、標準化交付件、開放 API 生態
系統整合商/SI全棧自研、技術棧鎖定客戶組裝最佳元件、負責整合品質、交付可維運系統
CTO/CIO/企業主只看交付速度、忽視技術債拒收無測試/無文檔/高耦合系統、投資平台建設

技術選型決策矩陣

# 核心原則:Spring 已基本解決「解耦」難題
# 1. 業務邏輯 → Spring @Service + @Transactional (POJO)
# 2. 資料存取 → Spring Data JPA / MyBatis (Repository 介面)
# 3. 遠端服務 → Spring Cloud / gRPC / REST (契約優先)
# 4. 非同步處理 → @Async / Spring Cloud Stream / Kafka
# 5. 監控追蹤 → Micrometer + Prometheus + Grafana / SkyWalking

# EJB 3 適用場景:
# - 已投資 Java EE 容器 (WebLogic/WildFly/GlassFish)
# - 需要標準化 CMP/遠端 EJB/Timer Service
# - 團隊熟悉 Java EE 規範而非 Spring 生態

給中國軟體業的行動呼籲

  1. 停止「為了重寫而重寫」:每次技術升級必須保留業務核心邏輯資產
  2. 建立組織級元件庫:內部 Maven 私服、文檔門戶、範例專案、遷移指南
  3. 推動跨企業元件交易:開放 API 市場、標準化 SLA、信任機制
  4. 教育體系改革:高校課程從「語法教學」轉向「架構設計、元件開發、演進式重構」
  5. 尊重專業分工:業務專家懂業務、架構師懂架構、開發者懂工程、測試懂品質

組件化不是銀彈,但它是通往軟體工業化的必經之路。EJB 與 Spring 同源共祖,都指向同一個理想:讓軟體像硬體一樣可組裝、可替換、可演進。這需要技術人員的堅守、管理者的投入、產業的協作。從今天開始,為你的每一行代碼負責——它未來一定會成為別人的元件。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved