Spring源碼解析系列匯總


相信我,你會收藏這篇文章的

本篇文章是這段時間擼出來的Spring源碼解析系列文章的匯總,總共包含以下專題。喜歡的同學可以收藏起來以備不時之需

SpringIOC源碼解析(上)

  1. 本篇文章搭建了IOC源碼解析的demo環境,啟動這個環境即可開啟閱讀Spring源碼的第一步
  2. 開始源碼閱讀時介紹了Spring容器中最經典的容器ClassPathXmlApplicationContext,這個容器是我們在學習Spring的時候最先接觸的一個容器,它負責加載當前環境下的xml配置文件
  3. 緊接着介紹了bean工廠BeanFactory以及容器中bean的包裝類BeanDefinition
  4. 然后就是Spring對xml配置文件的加載和解析
  5. 當解析的beans標簽中各個bean中時將會把這個東東使用BeanDefinition包裝后注冊到容器中
  6. bean注冊完成后會有一些Spring對BeanFactory的擴展點的處理
  7. 當然除了擴展點還有國際化、監聽器等操作

SpringIOC源碼解析(下)

  1. 開篇先介紹了conversionServiceEmbeddedValueResolver兩個比較有意思的東東
  2. 然后就是重點的bean的初始化
  3. 初始化過程中涉及到了singletonprototype兩個Scope的bean的處理
  4. 當然,還有令人頭疼的循環依賴問題
  5. 創建bean的過程中還有我們熟悉的@Autowired注解注入屬性的方式
  6. 接着就是一些清除緩存的操作

SpringIOC源碼解析(基於注解)
閱讀本篇文章之前建議您首先查看上方兩篇文章,因為本篇主要是描述了基於注解的方式和基於xml配置文件方式的異同點

  1. 源碼閱讀環境的搭建
  2. 首先簡單描述了bean容器AnnotationConfigApplicationContext
  3. 然后源碼執行的第一步就是關於包掃描一塊的東西,也就是我們比較熟悉的注解@ComponentScan
  4. 掃描到了各個帶有注解的類之后就是讀取類呀、反射呀什么的來加載類
  5. bean已經加載完后就是bean的注冊邏輯了
    相比較與之前兩篇文章的長篇大論,這篇文章的篇幅要少很多,這主要得益於Spring的設計精妙和代碼之優雅

基於注解的SpringAOP源碼解析(一)

  1. 源碼閱讀環境的搭建
  2. @EnableAspectJAutoProxy注解的原理
  3. @EnableAspectJAutoProxy注解又使用到了@Import注解,關於@Import注解的文章下面有地址

基於注解的SpringAOP源碼解析(二)

  1. 首先提到了SpringAOP是基於postProcessBeforeInstantiationpostProcessAfterInstantiation兩個方法實現的,這篇文章主講postProcessBeforeInstantiation
  2. 加載增強
  3. 獲取所有的增強又對增強進行了一系列的封裝

基於注解的SpringAOP源碼解析(三)

  1. postProcessAfterInstantiation開篇
  2. 所有的bean在初始化之后都會調用這個方法
  3. 在這里獲取到之前加載到的所有的增強,和類的所有方法一一匹配
  4. 當類具有匹配增強的時候就可以為這個類生成具體的代理了

SpringJDBC源碼解析

  1. 傳統JDBC的使用
  2. 源碼閱讀環境的搭建
  3. 使用JdbcTemplate以update方法切入
  4. 獲取連接加載驅動等方法的封裝
  5. 請求參數的封裝
  6. 調用驅動提供的方法
  7. query方法的分析,與update僅有返回結果的處理不同其他完全相同

Spring @Import注解源碼解析

  1. 三種使用方式
  2. 加載時機
  3. 對不同使用方式的處理方式

Spring事務源碼解析(一)

  1. 源碼閱讀環境的搭建
  2. @EnableTransactionManagement注解的原理解析

Spring事務源碼解析(二)獲取增強
讀到這里的朋友希望您最好對AOP的源碼有一定的了解

  1. 增強的獲取
  2. @Transactional注解屬性的解析

Spring事務源碼解析(三)

  1. 創建事務信息(包含事務隔離級別的處理等)
  2. 調用執行鏈
  3. 異常回滾
  4. 清除事務信息
  5. 提交事務

SpringMVC源碼解析(一)

  1. 源碼閱讀環境的搭建
  2. SpringBoot中SpringMVC自動配置原理
  3. DispatcherServlet的初始化邏輯
  4. web容器的初始化

SpringMVC源碼解析(二)

  1. 獲取對應的handler
  2. 獲取對應的handlerAdapter
  3. 調用handle
  4. 執行攔截器
  5. 處理返回結果

源碼閱讀環境

您可能注意到上方文章中包含了很多源碼閱讀環境的搭建,當真正自己要去閱讀時搭建起來還是比較浪費時間的。所以我把這些工作都替您做好了,您可以直接訪問下方鏈接獲取
https://github.com/shiyujun/spring-framework

后續規划

  1. Spring常用擴展點的應用場景
  2. SpringBoot源碼解析
  3. SpringCloud常用組件源碼解析
  4. MyBatis、druid源碼解析
  5. 阿里開源Nacos、Sentinel、Seata源碼解析
  6. K8S、Istio源碼解析
  7. 等等

交流群
為了方便大家的交流學習,特意搞了個技術交流群,有興趣的同學可以掃描下方二維碼進群。如二維碼過期可在公眾號添加小編的微信發送暗號進群
1


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM