Spring應用手冊-AOP(XML)-(3)-AOP-XML-的expose-proxy和proxy-target-class
阿新 • • 發佈:2020-10-21
戴著假髮的程式設計師出品 抖音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進行動態代理。