簡單說_spring

前言

  最近在和小夥伴們討論spring的內容,今天小鹹兒特來總結一波~


敘述

寶圖

  先來看看spring各個模塊之間的關係

在這裏插入圖片描述
  既然看到了spring的各個模塊關係圖,那麼我們就先來介紹一下spring的兩大模塊。

spring是什麼

Spring是一個開放源代碼的設計層面框架,它解決的是業務邏輯層和其他各層的鬆耦合問題,因此它將面向接口的編程思想貫穿整個系統應用。Spring是於2003 年興起的一個輕量級的Java 開發框架,由Rod Johnson創建。簡單來說,Spring是一個分層的JavaSE/EE full-stack(一棧式) 輕量級開源框架。

或者簡單說來就是一切從bean開始。

四個關鍵策略

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

IOC/DI

  IOC:控制反轉,也就是說將需要實現的對象創建、依賴的代碼交給spring去實現。

  DI:去賦值,維護好對象與對象之間的關係。

  • spring-beans和spring-core是核心模塊,包含控制反轉(Inversion of Control,IOC)和依賴注入(Dependency Injection,DI)。
  • spring-context模塊構架於核心模塊之上,擴展了BeanFactory,爲她添加了Bean生命週期控制、框架事件體系以及資源加載透明化
  • spring-expression模塊是統一表達式語言(EL)的擴展模塊,可以查詢、管理運行中的對象,同時也方便的可以調用對象方法、操作數組、集合等。

AOP

  AOP採取橫向抽取機制,取代了傳統縱向繼承體系重複性代碼。Spring AOP使用純java實現,不需要專門的編譯過程和類加載器,在運行期通過代理方式向目標類織入增強代碼。

縱向繼承:
在這裏插入圖片描述
橫向抽取:
在這裏插入圖片描述
在這裏插入圖片描述
實現原理:

  • AOP底層採用代理機制進行實現。
  • 接口 + 實現類:spring採用JDK的動態代理 Proxy。
  • 實現類:spring採用cglib字節碼增強。

由spring-aspects和spring-instrument和spring-aop三個模塊組成。

  • spring-aop是spring的另一個核心模塊,是AOP主要的實現模塊,以JVM的動態代理技術爲基礎,設計出了一系列的AOP橫切實現,比如前置通知、返回通知、異常通知等。
  • spring-aspects模塊集成自AspectJ框架,主要是爲spring AOP提供多種AOP實現方法。
  • spring-instrument模塊是基於Java SE中的“java.lang.instrument”進行設計的,應該算是AOP的一個支援模塊,主要作用是JVM啓動時,生成一個代理類。

總結

  有關更多spring的內容分享,還請見小鹹兒的博客內容。

感謝您的閱讀~~

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