spring 強制采用cglib進行代理


spring對AOP的支持

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


如何強制使用CGLIB實現AOP?
 * 添加CGLIB庫,SPRING_HOME/cglib/*.jar
 * 在spring配置文件中加入<aop:aspectj-autoproxy proxy-target-class="true"/>
 
JDK動態代理和CGLIB字節碼生成的區別?
 * JDK動態代理只能對實現了接口的類生成代理,而不能針對類
 * CGLIB是針對類實現代理,主要是對指定的類生成一個子類,覆蓋其中的方法
   因為是繼承,所以該類或方法最好不要聲明成final 

 maven依賴


  
  
  
          
  1. <dependency>
  2. <groupId>cglib</groupId>
  3. <artifactId>cglib</artifactId>
  4. <version>2.2.2</version>
  5. </dependency>

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM