自從看了谷歌大神拼S強擼的Spring源碼筆記,我從渣渣練成了鋼鐵

閑言碎語

首先說說Spring高級框架,我把Spring高級框架分為三個部分:

  • ssh=spring+struts+hibernate
  • ssm=spring+springmvc+mybatis
  • spring全家桶=腳手框架springboot、微服務(wù)框架springcloud等等

今天要講的就是spring高級源碼,讀源碼絕對算得上是一件費時費力的工作,需要讀者耗費大量的時間去完成,但是一旦你認真去做了,你可以更好的掌握框架;更好的處理代碼中出現(xiàn)的問題或者bug;同時離架構(gòu)師又更進了一步。

Spring是一 個分層非常清晰并且依賴關(guān)系、職責定位非常明確的輕量級框架,主要包括幾個大模塊:

  • 數(shù)據(jù)處理模塊
  • Web模塊
  • AOP (Aspect Oriented Programming) /Aspects模塊
  • Core Container模塊和Test模塊

spring依靠這些基本模塊, 實現(xiàn)了一個令人愉悅的融合了現(xiàn)有解決方案的零侵入的輕量級框架。

不多說,一起跟著谷歌大神抽絲剝繭,把spring核心部分撕碎,徹底讀懂spring源碼,理解框架,本文一共分為七個部分,內(nèi)容較多,小編下面以文字+截圖形式為大家展示

Spring概述

  • Spring簡介

Spring 是分層的 full-stack(全棧) 輕量級開源框架,以 IoC和AOP為內(nèi)核,提供了展現(xiàn)層SpringMVC 和業(yè)務(wù)層事務(wù)管理等眾多的企業(yè)級應(yīng)用技術(shù),還能整合開源世界眾多著名的第三方框架和類庫,已經(jīng)成為使用最多的 Java EE 企業(yè)應(yīng)用開源框架。

  • Spring發(fā)展歷程
  • Spring的優(yōu)勢
  • Spring的核心結(jié)構(gòu)(如下圖)
  • Spring的框架版本

Spring的核心思想

IOC和AOP不是spring提出的,在spring之前就已經(jīng)存在,只不過更偏向于理論化,spring在技術(shù)層次把這兩個思想做了非常好的實現(xiàn)(Java)

IoC

  • 什么是IoC
  • IoC解決了什么問題
  • IoC和DI的區(qū)別

AOP

  • 什么是AOP
  • AOP在解決什么問題
  • 為什么叫做面向切面編程

手寫實現(xiàn) IoC 和 AOP

上個部分我們理解了IoC和AOP思想,我們先不考慮Spring是如何實現(xiàn)這兩個思想的,此處準備了一個【銀行轉(zhuǎn)賬】的案例,請分析該案例在代碼層次有什么問題 ?分析之后使用我們已有知識解決這些問題(痛點)。其實這個過程我們就是在一步步分析并手寫實現(xiàn) IoC和AOP。

  • 銀行轉(zhuǎn)賬界面
  • 銀行轉(zhuǎn)賬案例表結(jié)構(gòu)
  • 銀行轉(zhuǎn)賬案例代碼調(diào)用關(guān)系
  • 銀行轉(zhuǎn)賬案例關(guān)鍵代碼
  • 銀行轉(zhuǎn)賬案例代碼問題分析
  • 問題解決思路
  • 案例代碼改造

Spring IOC 應(yīng)用

Spring IoC基礎(chǔ)

  • BeanFactory與ApplicationContext區(qū)別
  • 純xml模式
  • xml與注解相結(jié)合模式
  • 純注解模式

Spring IOC高級特性

  • lazy-Init 延遲加載
  • FactoryBean 和 BeanFactory
  • 后置處理器

Spring IOC源碼深度剖析

Spring IoC容器初始化主體流程

  • Spring IoC的容器體系
  • Bean生命周期關(guān)鍵時機點
  • Spring IoC容器初始化主流程

BeanFactory創(chuàng)建流程

  • 獲取BeanFactory子流程
  • BeanDefinition加載解析及注冊子流程

Bean創(chuàng)建流程

lazy-init 延遲加載機制原理

Spring IoC循環(huán)依賴問題

  • 什么是循環(huán)依賴
  • 循環(huán)依賴處理機制

Spring AOP 應(yīng)用

AOP本質(zhì):在不改變原有業(yè)務(wù)邏輯的情況下增強橫切邏輯,橫切邏輯代碼往往是權(quán)限校驗代碼、日志代碼、事務(wù)控制代碼、性能監(jiān)控代碼。

AOP 相關(guān)術(shù)語

  • 業(yè)務(wù)主線
  • AOP 術(shù)語

Spring中AOP的代理選擇

Spring中AOP的配置方式

Spring中AOP實現(xiàn)

  • XML 模式
  • XML+注解模式
  • 注解模式

Spring 聲明式事務(wù)的支持

Spring AOP源碼深度剖析

代理對象創(chuàng)建

  • AOP基礎(chǔ)用例準備
  • 時機點分析
  • 代理對象創(chuàng)建流程

Spring聲明式事務(wù)控制

  • @EnableTransactionManagement
  • 加載事務(wù)控制組件

總結(jié)

這份滿滿都是干貨的Spring高級源碼筆記是由華南谷歌架構(gòu)師總結(jié)出來的,這位大佬對于Spring框架的理解程度真的以及到了一個“恐怖變態(tài)”的地步了,之前小編還看過這個大佬的一個視頻,講的非常nb,跪服!

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容