天天看點

spring5源碼閱讀0目标與準備工作1 目标2 準備3 基礎

spring5源碼閱讀0目标與準備工作

  • 1 目标
  • 2 準備
  • 3 基礎

1 目标

  1. spring的bean的建立與注入?
  2. spring的AOP是如何建立,并調用的?
  3. spring容器的啟動過程主要幹啥了?具體過程是什麼樣的?
  4. springMVC的容器是什麼?
  5. springMVC容器啟動過程主要幹啥了?具體過程是什麼樣的?
  6. springMVC中的controller是如何比對上HTTPRequest的?又是如何傳回給用戶端的?

2 準備

  1. xml版 webAPP

    https://github.com/neroHua/spring5

  2. 注解版 webAPP

    https://github.com/neroHua/spring5

    不提供注解版了,沒太多東西。

3 基礎

  1. 注解

    自行學習吧

  2. 反射

    自行學習吧

  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形式列印儲存位元組碼檔案。

  4. JDK proxy

    直接通過操作class檔案,生成新的class檔案,并會緩存已經生成過的class檔案。通過反射建立對象。

  5. cblib proxy

    通過調用asm操作class檔案,來生成新的class,并會緩存已經生成過的class檔案。通過反射建立對象。

  6. 設計模式

    自行學習吧。