我想創建一個切入點表達式來攔截對包com.xmy.package及其子包中的所有類的所有方法調用。我的XML,代碼看起來像下面Spring AOP Poincut表達式
<aop:config>
<aop:pointcut id="allCalls" expression="within(com.xmy.package..*)" />
<aop:aspect ref="loggingService">
<aop:around method="logMethodFlow" pointcut-ref="allCalls" />
</aop:aspect>
</aop:config>
產生的原因:org.springframework.aop.framework.AopConfigException:無法生成類...... .. 的CGLIB子類。 。 。 。導致:java.lang.IllegalArgumentException:超類沒有空構造函數,但沒有給出參數 at net.sf.cglib.proxy.Enhancer.emitConstructors(Enhancer.java:721) at net.sf.cglib.proxy .Enhancer.generateClass(Enhancer.java:499) at net.sf.cglib.transform.TransformingClassGenerator.generateClass(TransformingClassGenerator.java:33) at net.sf.cglib.core.DefaultGeneratorStrategy.generate(DefaultGeneratorStrategy.java:25 )at net.sf.cglib.core.AbstractClassGenerator.create(AbstractClassGenerator.java:216) at net.sf.cglib.proxy.Enhancer.createHelper(Enhancer.java:377) at net.sf.cglib.proxy .Enhancer.create(Enhancer.java:285) at org.springframework.aop.framework.Cglib2AopProxy.getPr氧(Cglib2AopProxy.java:201)
但是,當我使用切入點表達式爲一個特定的類(如下)它工作正常。
<aop:config>
<aop:pointcut id="classCalls" expression="execution(* com.xmy.package.MyClass.*(..))" />
<aop:aspect ref="loggingService">
<aop:around method="logMethodFlow" pointcut-ref="classCalls" />
</aop:aspect>
</aop:config>
請讓我知道如何將所有方法調用記錄到特定包及其子包。