spring5源碼閱讀0目标與準備工作
- 1 目标
- 2 準備
- 3 基礎
1 目标
- spring的bean的建立與注入?
- spring的AOP是如何建立,并調用的?
- spring容器的啟動過程主要幹啥了?具體過程是什麼樣的?
- springMVC的容器是什麼?
- springMVC容器啟動過程主要幹啥了?具體過程是什麼樣的?
- springMVC中的controller是如何比對上HTTPRequest的?又是如何傳回給用戶端的?
2 準備
-
xml版 webAPP
https://github.com/neroHua/spring5
-
注解版 webAPP
https://github.com/neroHua/spring5
不提供注解版了,沒太多東西。
3 基礎
-
注解
自行學習吧
-
反射
自行學習吧
-
ASM
通過直接操作class檔案,來生成新的class。
主要使用的設計模式是通路者模式。
主要的類:
ClassReader:主要用來讀取class檔案,并接受通路者,改變讀取class。主要方法時accept方法:該方法會解析内部的class檔案,同時會調用通路者進行通路。
ClassVisitor:主要用來通路ClassReader解析的class檔案。它内部有個classVisitor類型的字段,該字段可以實作多個觀察者的鍊式通路。
MethodVisitor: 主要用來通路ClassReader解析的class檔案中的Method。它内部有個MethodVisitor類型的字段,該字段可以實作多個觀察者的鍊式通路。
FieldVisitor: 主要用來通路ClassReader解析的class檔案中的Field。它内部有個FieldVisitor類型的字段,該字段可以實作多個觀察者的鍊式通路。
還有一些用于輔助設計的工具類:
ASMifier: 用于以java列印已經存在的class檔案。
TraceClassVisitor: 用于以java形式列印儲存位元組碼檔案。
-
JDK proxy
直接通過操作class檔案,生成新的class檔案,并會緩存已經生成過的class檔案。通過反射建立對象。
-
cblib proxy
通過調用asm操作class檔案,來生成新的class,并會緩存已經生成過的class檔案。通過反射建立對象。
-
設計模式
自行學習吧。