Spring聲明式事務如何選擇代理方式?


Spring聲明式事務如何選擇代理方式

 

 

解決方法:

1.基於注解方法:

  1. <tx:annotation-driven transaction-manager="txManager" proxy-target-class="true"/>  

2.基於xml配置方法:

<aop:config expose-proxy="true" proxy-target-class="false">

</aop:config>

默認false,選擇jdbc代理模式,true使用cglib代理模式。

 

 

 

jdbc代理模式和cglib代理模式優缺點比較:

    1. 若目標對象實現了若干接口,spring使用JDK的java.lang.reflect.Proxy類代理。 
      優點:因為有接口,所以使系統更加松耦合 
      缺點:為每一個目標類創建接口

    2. 若目標對象沒有實現任何接口,spring使用CGLIB庫生成目標對象的子類。 
      優點:因為代理類與目標類是繼承關系,所以不需要有接口的存在。 
      缺點:因為沒有使用接口,所以系統的耦合性沒有使用JDK的動態代理好。


免責聲明!

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



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