第一種解決方法
出現這個異常是在spring AOP 的狀況下,實現類實現了接口,而在配置註解的 時候直接使用spring
@EnableAspectJAutoProxy形成的編程
解決辦法:將@EnableAspectJAutoProxy改爲@EnableAspectJAutoProxy(proxyTargetClass=true)便可ui
JDK動態代理和CGLIB字節碼生成的區別?代理
JDK動態代理只能對實現了接口的類生成代理,而不能針對類接口
CGLIB是針對類實現代理,主要是對指定的類生成一個子類,覆蓋其中的方法get
第二種解決方法
註釋:經過配置織入@Aspectj切面雖然能夠經過編程的方式織入切面,可是通常狀況下,咱們仍是使用spring的配置自動完成建立代理織入切面的工做。經過aop命名空間的聲明自動爲spring容器中那些配置@aspectJ切面的bean建立代理,織入切面。固然,spring在內部依舊採用AnnotationAwareAspectJAutoProxyCreator進行自動代理的建立工做,但具體實現的細節已經被隱藏起來了有一個proxy-target-class屬性,默認爲false,表示使用jdk動態代理織入加強,當配爲時,表示使用CGLib動態代理技術織入加強。不過即便proxy-target-class設置爲false,若是目標類沒有聲明接口,則spring將自動使用CGLib動態代理。io
<aop:aspectj-autoproxy proxy-target-class="true"/>便可;class