cglib的實(shí)現(xiàn)原理是什么?
CGLIB(Code Generation Library)是一個開源項(xiàng)目!是一個強(qiáng)大的,高性能,高質(zhì)量的Code生成類庫,它可以在運(yùn)行期擴(kuò)展Java類與實(shí)現(xiàn)Java接口。Hibernate用它來實(shí)現(xiàn)PO(Persistent Object 持久化對象)字節(jié)碼的動態(tài)生成。
CGLIB是一個強(qiáng)大的高性能的代碼生成包。它廣泛的被許多AOP的框架使用,例如Spring AOP為他們提供
方法的interception(攔截)。CGLIB包的底層是通過使用一個小而快的字節(jié)碼處理框架ASM,來轉(zhuǎn)換字節(jié)碼并生成新的類。
除了CGLIB包,腳本語言例如Groovy和BeanShell,也是使用ASM來生成java的字節(jié)碼。當(dāng)然不鼓勵直接使用ASM,
因?yàn)樗竽惚仨殞VM內(nèi)部結(jié)構(gòu)包括class文件的格式和指令集都很熟悉。