1. 程式人生 > 其它 >proxy-target-class使用Cglib基於子類建立代理物件

proxy-target-class使用Cglib基於子類建立代理物件

技術標籤:SpringSpringBoot學習javaspring

proxy-target-class屬性值決定是基於介面的還是基於類的代理被建立。如果proxy-target-class 屬性值被設定為true,那麼基於類的代理將起作用(這時需要cglib庫)。如果proxy-target-class屬值被設定為false或者這個屬性被省略,那麼標準的JDK 基於介面的代理。
如果報錯:

java.lang.ClassCastException: com.sun.proxy.$Proxy12 cannot be cast to cn.edu.nuc.SpringTest.service.
impl.DemoServiceImpl

那麼就說明了你使用的是基於子類建立代理的模式,但是使用的是基於介面建立的模式。
需要設定<aop:aspectj-autoproxy proxy-target-class=“true”/>
Springboot配置檔案設定為spring.aop.proxy-target-class=true
產生此情況的主要原因是:
專案結構如下:
在這裡插入圖片描述
即專案是介面-實現類方式構建的,這種方式經考證對實際開發幫助不大,建議在考慮效能時不要使用這種方法。