Spring| 初識DI和AOP2

Spring致力於簡化企業級Java開發, 促進代碼的鬆散耦合。 成功的關鍵在於依賴注入和AOP。


依賴注入(dependencyinjection, DI)

解釋:
DI是組裝應用對象的一種方式,藉助這種方式對象無需知道依賴來自何處或者依賴的實現方式。 不同於自己獲取依賴對象, 對象會在運行期賦予它們所依賴的對象。 依賴對象通常會通過接口瞭解所注入的對象, 這樣的話就能確保低耦合。簡單的說就是多態的使用.
作用:
DI能夠讓相互協作的軟件組件保持鬆散耦合

不使用依賴注入的情況,對象的產生在類內部(緊耦合)
在這裏插入圖片描述

使用依賴注入的情況(鬆耦合,運行時才知道正真的實例對象)
在這裏插入圖片描述


面向切面編程(aspect-oriented programming,AOP)

解釋:
AOP可以幫助應用將散落在各處的邏輯彙集於一處——切面。 當Spring裝配bean的時候, 這些切面能夠在運行期編織起來, 這樣就能非常有效地賦予bean新的行爲。
作用:
把遍佈應用各處的功能分離出來形成可重用的組件
實踐應用:
基於SpringAOP的日誌模塊 (需要調研)
基於SpringAOP的安全模塊 (需要調研)
基於SpringAOP實現聲明式事務和安全(第9章和第14章) 。

比如: 講師開始上課,要開始計時打開(輸入上課日誌,和下課日誌,來配置)
在這裏插入圖片描述
不使用切面編程時,每個對象不但要知道它需要記日誌、 進行安全控制和參與事務, 還要親自執行這些服務。

在這裏插入圖片描述

使用AOP系統範圍內的關注點覆蓋在它們所影響組件之上,不改變原有業務邏輯

舉例子說明:
無AOP時如何實現

在這裏插入圖片描述
有AOP時的實現?
在這裏插入圖片描述


Spring的使命

Spring 可以做非常多的事情。 但歸根結底, 支撐Spring的僅僅是少許的基本理念, 所有的理念都可以追溯到Spring根本使命上: 簡化Java開發。爲了降低Java開發的複雜性, Spring採取了以下4種關鍵策略:

  • 基於POJO的輕量級和最小侵入性編程;
  • 通過依賴注入和麪向接口實現鬆耦合;
  • 基於切面和慣例進行聲明式編程;
  • 通過切面和模板減少樣板式代碼。

POJO(Plain Ordinary Java Object)簡單的Java對象,實際就是普通JavaBeans,是爲了避免和EJB混淆所創造的簡稱。
使用POJO名稱是爲了避免和EJB混淆起來, 而且簡稱比較直接. 其中有一些屬性及其getter setter方法的類,沒有業務邏輯,有時可以作爲VO(value -object)或dto(Data Transform Object)來使用.當然,如果你有一個簡單的運算屬性也是可以的,但不允許有業務方法,也不能攜帶有connection之類的方法。
參考: https://baike.baidu.com/item/POJO/3311958?fr=aladdin

總結

DI(依賴注入)和AOP (切面編程)是Spring框架最核心的部分, 因此只有理解了如何應用Spring最關鍵的功能, 你纔有能力使用Spring框架的其他功能。 本文, 我們只是觸及了Spring DI和AOP特性的皮毛。 在接下來的文章中,我們將深入探討DI和AOP。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章