1. 程式人生 > 實用技巧 >Spring應用手冊-AOP(XML)-(3)-AOP-XML-的expose-proxy和proxy-target-class

Spring應用手冊-AOP(XML)-(3)-AOP-XML-的expose-proxy和proxy-target-class

戴著假髮的程式設計師出品 抖音ID:戴著假髮的程式設計師 歡迎關注

AOP-XML-的expose-proxy和proxy-target-class

spring應用手冊(第四部分)

在這裡插入圖片描述
expose-proxy是用來配置是否暴露代理bean的。在註解方式中已經解釋過這個屬性。

這裡稍微說一下。

如果有下面的情況:
在這裡插入圖片描述
在業務類內部的方法printMessage中呼叫formatMessage方法,那麼兩個方法是否都會被增強。

預設情況下只會增強printMessage方法,內部的this.formatMessage是不會被增強的。因為this是目標物件,而不是代理物件。

如果希望內部呼叫的formatMessage也被增強,就要給將expose-proxy配置為true,然後在內部這樣呼叫:

在這裡插入圖片描述

proxy-target-class屬性是用來配置AOP產生代理物件時的代理模式的。

springAOP的代理方法無所謂是註解還是XML配置,預設情況下都是檢視目標類是否有實現任何介面,如果實現介面則使用JDK代理方式,如果沒有實現介面,就使用CGLib方式。

當然有些情況下我們可能需要強制要求使用CGLib,這時在XML配置方式我們可以使用aop:aspectj-autoproxy屬性proxy-target-class修改為true,強行要求spring使用CGLib進行動態代理。