spring對AOP的代理支持——JDK動態代理和CGLIB字節碼生成

spring對AOP的代理支持——JDK動態代理和CGLIB字節碼生成
2010-01-27 15:02

spring對AOP的代理支持
1、如果目標對象實現了接口,默認情況下會採用JDK的動態代理實現AOP
2、如果目標對象實現了接口,可以強制使用CGLIB實現AOP
3、如果目標對象沒有實現了接口,必須採用CGLIB庫,spring會自動在JDK動態代理和CGLIB之間轉換

如何強制使用CGLIB實現AOP?
* 添加CGLIB庫,SPRING_HOME/cglib/*.jar
* 在spring配置文件中加入<aop:aspectj-autoproxy proxy-target-class="true"/> //默認是false,即且jdk動態代理

JDK動態代理和CGLIB字節碼生成的區別?
* JDK動態代理只能對實現了接口 的類生成代理,而不能針對類
* CGLIB是針對 實現代理,主要是對指定的類生成一個子類,覆蓋其中的方法
   因爲是繼承,所以該類或方法最好不要聲明成final

實際開發中,推薦用默認的jdk動態代理

 

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