JDK動態生成代碼

前幾天遇到一個需求,需要同時修改幾個接口且都是同樣的處理邏輯,沒有比用註解更方便的解決方案了。瞬間想到用AOP,你是不是也像我一樣想到了@Aspect註解,但是我用的不是spring框架,是我們公司自研框架,所以@Aspect註解不能拿來直接用的。那我們知道spring面向切面編程底層是用JDK的動態代理和CGLIB動態代理實現的,於是我就想自己針對框架寫一個基於註解的面向切面編程,處理過程大概爲監聽請求,並解析,根據參數生成對應接口的代理類,通過代理類調用原來的方法。有三種方式可以實現,1、JDK動態代理,如果被代理類實現某個或多個接口,有限選擇該種方式;2、CGLIB動態代理,不要求被代理類必須實現接口,會生成一個被代理類的擴展類;3、靜態代理,如果你基礎足夠紮實的話,你應該知道java.lang.instrument包,這個包可以幫助我們實現一個代理,來修改任意類的字節碼。你想知道JDK動態代理,CGLIB動態代理,靜態代理都是如何實現的,他們之間有何區別並從零開始實現一個基於註解的代碼織入邏輯嗎?關注我,我們一起來探討這豐富有趣的知識吧。

關於動態代理:

一. JDK動態代理

二. CGLIB動態代理

關於靜態代理:

三. java Instrument靜態代理

四. 實現一個基於註解的代碼織入邏輯

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章