パッケージ 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 サブクラスを生成できませんでした...... .. . . . . 原因: java.lang.IllegalArgumentException: スーパークラスには null コンストラクターがありませんが、net.sf.cglib.proxy.Enhancer の net.sf.cglib.proxy.Enhancer.emitConstructors(Enhancer.java:721) で引数が指定されていません。 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>
特定のパッケージとそのサブパッケージへのすべてのメソッド呼び出しをログに記録する方法を教えてください。