我必須對屬於com.mycomp的包和子包的所有方法應用日誌記錄信息**。我嘗試了很多在spring參考手冊中給出的切入點,但是可悲的是,沒有人爲我工作。 我使用Logging中的切入點表達式問題,使用log4j的Spring AOP
@Pointcut("execution(* com.mycomp..(..))")
private void businessService() {} // signature
我所得到的是
Caused by: java.lang.IllegalArgumentException: Pointcut is not well-formed: expecting
'name pattern cannot finish with ..' at character position 27
execution(* com.mycomp..(..))
在文檔中,因爲
@Pointcut("execution(com.xyz.someapp..service..(..))")
我一直在使用執行(com.mycomp。(試過。 。))但有類似的例外。
按照James的建議,在使用切入點@Around(value =「execution(* xyz.package.foo.bar .. *(..))」)時,我在啓動服務器時遇到新的異常。
Caused by: java.lang.IllegalStateException: Cannot convert value of type [$Proxy76 implementing org.springframework.context.ApplicationContextAware,org.springframework.aop.SpringProxy,org.springframework.aop.framework.Advised] to required type [com.mycompname.BancsContextAware] for property 'bancsContextAware': no matching editors or conversion strategy found
at org.springframework.beans.TypeConverterDelegate.convertIfNecessary(TypeConverterDelegate.java:264)
at org.springframework.beans.BeanWrapperImpl.convertIfNecessary(BeanWrapperImpl.java:448)
... 57 more
後來調試我發現,在類中的一個我使用object.getClass()。getAnnotation()並且其通過彈簧AOP創建不具有註釋代理對象。因爲只有我得到一個空指針異常。我整理,使用AopProxyUtils.ultimateTargetClass(someObject) 但現在的問題是,我有com.mycom ..因爲這樣子包內最後的一些類和枚舉我得到
nested exception is org.springframework.aop.framework.AopConfigException:
Could not generate CGLIB subclass of class [class com.mycom.util.BancsServiceProvider]: Common causes of this problem include using a final class or a non-visible class; nested exception is java.lang.IllegalArgumentException: Cannot subclass final class class com.mycom.util.BancsServiceProvider
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:529)
那麼如何排除Spring AOP切入點的最終類和枚舉。