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