Cglib,asm,Aspect,JDK原生的代理模式這四種有哪些差別,原理各是什麼?

1.jdk是內部生成了一個實現了被代理類所有接口的代理類,用反射來調用InvocationHandler的invoke方法來代理所有類,生成速度最快,執行速度最慢。
2.asm直接操作字節碼,然後用classload加載如jvm裏,生成速度慢,執行速度較快。
3.感覺cglib是對asm的封裝啊,不用瞭解那麼多class類結構就可以用了。由於封裝性能比asm差點,但是比JDK快。

4.aspectJ是編譯的時候直接編譯入切面,速度應該是最快的。


  使用cglib爲目標類提供動態代理:需要導入cglib.jar和asm.jar。如果出現asm中的類無法找到的異常,在java工程中是真的缺少asm.jar,而在web工程中很可能是asm.jar和spring提供的org.springframework.asm-3.0.4.RELEASE.jar包衝突。


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