基于Spring AOP proxyTargetClass的行為表現(xiàn)總結(jié)
Spring AOP proxyTargetClass的行為
要點列表形式
proxyTargetClass
true
- 目標對象實現(xiàn)了接口 – 使用CGLIB代理機制
- 目標對象沒有接口(只有實現(xiàn)類) – 使用CGLIB代理機制
false
- 目標對象實現(xiàn)了接口 – 使用JDK動態(tài)代理機制(代理所有實現(xiàn)了的接口)
- 目標對象沒有接口(只有實現(xiàn)類) – 使用CGLIB代理機制
表格形式
proxyTargetClass | 目標對象特征 | 代理效果 |
---|---|---|
true | 目標對象實現(xiàn)了接口 | 使用CGLIB代理機制 |
true | 目標對象沒有接口(只有實現(xiàn)類) | 使用CGLIB代理機制 |
false | 目標對象實現(xiàn)了接口 | 使用JDK動態(tài)代理機制(代理所有實現(xiàn)了的接口) |
false | 目標對象沒有接口(只有實現(xiàn)類) | 使用CGLIB代理機制 |
proxy-target-class="true" 與proxy-target-class="false"的區(qū)別
<tx:annotation-driven transaction-manager="transactionManager" proxy-target-class="true"/>
注意:proxy-target-class屬性值決定是基于接口的還是基于類的代理被創(chuàng)建。
- 如果proxy-target-class 屬性值被設(shè)置為true,那么基于類的代理將起作用(這時需要cglib庫)。
- 如果proxy-target-class 屬值被設(shè)置為false或者這個屬性被省略,那么標準的JDK 基于接口的代理將起作用。
即使你未聲明 proxy-target-class="true" ,但運行類沒有繼承接口,spring也會自動使用CGLIB代理。
高版本spring自動根據(jù)運行類選擇 JDK 或 CGLIB 代理
以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關(guān)文章
Spring?Boot如何配置yml配置文件定義集合、數(shù)組和Map
這篇文章主要介紹了Spring?Boot?優(yōu)雅配置yml配置文件定義集合、數(shù)組和Map,包括Spring?Boot?yml配置文件定義基本數(shù)據(jù)類型和引用數(shù)據(jù)類型的方式,需要的朋友可以參考下2023-10-10IDEA中springboot提示java:找不到符號符號:變量log問題
這篇文章主要介紹了IDEA中springboot提示java:找不到符號符號:變量log問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教2024-04-04解決mybatisplus MetaObjectHandler 失效的問題
本文主要介紹了解決mybatisplus MetaObjectHandler 失效的問題,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2023-02-02Java調(diào)用打印機的2種方式舉例(無驅(qū)/有驅(qū))
我們平時使用某些軟件或者在超市購物的時候都會發(fā)現(xiàn)可以使用打印機進行打印,這篇文章主要給大家介紹了關(guān)于Java調(diào)用打印機的2種方式,分別是無驅(qū)/有驅(qū)的相關(guān)資料,需要的朋友可以參考下2023-11-11SpringBoot整合mybatis使用Druid做連接池的方式
這篇文章主要介紹了SpringBoot整合mybatis使用Druid做連接池的方式,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教2023-08-08