1. 程式人生 > >1. 簡化Java開發

1. 簡化Java開發

簡化Java開發

Spring的誕生

應對應用的複雜性,Spring的關鍵策略

  • 基於POJO的輕量級和最小侵入性程式設計

  • 通過依賴注入和麵向介面實現鬆耦合

  • 基於切面AOP和慣例進行宣告式程式設計

  • 通過切面和模板減少樣板式程式碼

POJO之美

定義

  • POJO(Plain Old Java Objects):簡單普通的Java物件。

  • 不具有任何特殊角色,不繼承/實現任何其他Java框架的類和介面。

很多框架具有侵入性,強迫開發者編寫與框架繫結的大量冗餘、難以測試的程式碼。

Spring強調基於POJO的最下侵入性程式設計

  • Spring不會強迫實現的特定規範的介面或繼承特定類

  • Spring通過依賴注入賦予POJO以魔力

J2EE中輕量級框架和重量級框架的概念:

  • 簡單一句話:量級主要由對容器的依賴性決定,依賴性越小,越輕量

  • 容器:用來管理元件行為的一個集合工具,元件的行為包括與外部環境的互動、元件的生命週期、元件之間的合作依賴關係等

  • 在Java應用開發環境中,“輕量級Java”主要指兩個東西:簡化的程式設計模型和更具響應能力的容器。輕量級Java旨在消除與傳統JavaEE API有關的不必要的複雜性和限制,同時縮短應用程式的部署實現。

  • 輕量級技術當中,控制反轉IoC(依賴注入DI)是關鍵。使用IoC,開發人員不需要編寫複雜的程式碼來執行查詢、處理基礎架構異常或管理連線,就能夠解決物件依賴性問題。這有助於簡化程式碼,將業務邏輯和基礎架構分離,從而是應用程式更容易維護。

  • 輕量級Java的另一個特徵就是,它不會強迫業務物件遵循平臺特定介面。這允許開發人員在普通Java物件(POJO)中實現業務邏輯,從而提高生產率。

依賴注入

  • 過於複雜的軟體系統,使得面向物件已經不夠。

  • 元件化的思想:分離關注點,其目的是解耦合,實現每個元件塊時只關注元件內部的事情,要點就是明確定義元件之間的介面。

  • 依賴注入:強制將元件的構建和使用分離,就像拼接泡沫板一樣,內部就自己內部管理,但是提供外部介面以供使用。

  • 實用的Java系統由多個類組成,類之間互相協作完成特定的業務邏輯。

  • 以往通常每個物件負責管理與之協作的物件(即所依賴的物件)的引用,導致高度耦合、難以測試。

  • 耦合具有兩面性

    • 耦合的程式碼難以測試

    • 一定程度的耦合是不可避免的

  • 依賴注入DI(Dependence Injection):物件的依賴關係由負責協調系統中各物件的第三方元件(通常是容器)在建立物件時設定。物件無需自己建立或管理它們的依賴關係——依賴關係將被自動注入到需要它們的物件中去。

  • 依賴注入帶來的好處:鬆耦合

  • Spring通過應用上下文裝載Bean的定義並把它們組裝起來,應用上下文負責物件的建立和組裝。

應用切面

橫切關注點:諸如日誌、事務管理和安全等系統服務通常被稱為橫切關注點(跨越系統的多個元件)。以往通常這些橫切關注點分散到多個元件中去(融入到有自身邏輯業務的元件中),導致程式碼引入雙重複雜性:

  • 遍佈系統的橫切關注點實現程式碼將會重複出現在多個元件中

  • 元件會因為這些與自身業務無關的程式碼而變得複雜混亂

AOP(面向切面程式設計)使得這些業務模組化,並以宣告的方式將他們應用到需要的元件中去,AOP能確保POJO簡單。

使用模板消除樣板式程式碼

  • JDBC等使用Java API導致樣板式程式碼

  • Spring旨在通過模板封裝來消除樣板式程式碼

例如,我們在JDBC的操作中,有增刪改查操作,這些操作的程式碼共性很多,而且每一種操作真正的重要部分往往就那麼幾行程式碼,此時我們可以封裝一個JDBC模板類(JDBCTemplate),作為一個通用的JDBC操作。