我想创建一个切入点表达式来拦截对包 com.xmy.package 及其子包中所有类的所有方法调用。我的 xml,代码如下所示
<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子类...... .. . . . . .Caused by: java.lang.IllegalArgumentException: Superclass has no null constructors but no arguments are given at net.sf.cglib.proxy.Enhancer.emitConstructors(Enhancer.java:721) at net.sf.cglib.proxy.Enhancer。 generateClass(Enhancer.java:499) 在 net.sf.cglib.transform.TransformingClassGenerator.generateClass(TransformingClassGenerator.java:33) 在 net.sf.cglib.core.DefaultGeneratorStrategy.generate(DefaultGeneratorStrategy.java:25) 在 net.sf .cglib.core.AbstractClassGenerator.create(AbstractClassGenerator.java:216) 在 net.sf.cglib.proxy.Enhancer.createHelper(Enhancer.java:377) 在 net.sf.cglib.proxy.Enhancer.create(Enhancer.java :
但是当我对特定类(如下)使用切入点表达式时,它可以正常工作。
<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>
请让我知道如何记录对特定包及其子包的所有方法调用。