spring核心是ioc和aop,aop的底層是**實現。
**分為兩種:jdk動態**和cglib**
區別:動態**:被**物件是要實現乙個介面,**類首先要拿到這個介面,來進行強制轉換,通過反射來生成**物件
public class meipo implements invocationhandler
@override
public object invoke(object proxy, method method, object args)throws throwable
}
public class test
// 動態的**的原理:
// 1:拿到被**物件的引用,然後獲取他的介面
// 2:jdk重新生成乙個類,同時實現被**物件鎖實現的介面
// 3:拿到被**物件的引用
// 4:重新生成乙個class位元組碼物件
// 5:編譯
// **模式必要條件:
// 兩個物件:執行者和被**物件
// 執行者要拿到被**物件引用
}
cglib**:cglib**是生成乙個被**物件的子類,來重寫父類的方法(被**物件),然後引用賦值給父類
public class meipo2 implements methodinterceptor
@override
public object intercept(object arg0, method arg1, object arg2,methodproxy arg3) throws throwable
}
public class test2
}
好了,簡單記錄下~~ Spring 原始碼閱讀(1)
這週在學習spring的原始碼,常常迷失在 森林中,因為英語水平不高,常常需要借助google翻譯幫忙解釋注釋,所以速度比較慢。下面是我模擬spring的解析xml,依賴注入的過程,比較簡略。node node nodes.item i if node instanceof element claz...
閱讀Spring原始碼
如何閱讀spring原始碼 學習原始碼的思路 為擴充套件 調優 掌握框架的工作流程和原理。提公升自己的程式設計能力 學習他人的設計模式和思路。掌握設計方法和分析思路。學習原始碼的方法 思路掌握問題域理論和核心概念 搞明白做什麼,如何做 從整體到部分 找到入口,先理清主幹流程,後細節 多思考,多分析 ...
Spring原始碼閱讀 一
3 finishbeanfactoryinitialization beanfactory 1 spring容器的初始化時,通過this 呼叫了無參建構函式,主要做了以下三個事情 1 例項化beanfactory defaultlistablebeanfactory 工廠,用於生成bean物件 2 ...