7

私は現在、以下に示すコードのようにAspectJにSpring Beanを注入しようとしていますが、とにかくサーバー(WAS Liberty Profile)がメソッドaspectOfが欠落していると文句を言い続けています。この問題をどのように解決できるかわかりますか?

application-context.xml

<aop:aspectj-autoproxy/>
<import resource="/context-file-A.xml"/>

コンテキストファイル-A.xml

<bean id="loggingAspect" class="com.huahsin.LoggingAspect" factory-method="aspectOf">

JAVAコード

@Aspect
public class LoggingAspect {
   ...
}
4

3 に答える 3

7

これは、アスペクト クラスを接続するときによくあるエラーです。これは、この場合、アスペクト クラスLoggingAspectが適用可能なアスペクトに変換されていないことを意味します。

クラスをアスペクトに織り込む 2 つの方法は、AJDT Eclipse プラグインまたはMaven AspectJ コンパイラ プラグインを使用することです。

アスペクトを織り込むには 3 つの方法があります。

  • コンパイル時のウィービング: 専用のspectjコンパイラを介してターゲットソースまたはアスペクトクラスをコンパイルします。
  • コンパイル後のウィービング: コンパイル済みのクラスにアスペクト命令を挿入 (JAR ファイルに適用可能)
  • Load-time weaving : クラスのロード中にアスペクト命令をバイトコードに挿入します。つまり、「生の」クラスの代わりにインストルメント化されたクラスをロードします。

アスペクト クラスをクラスに適用する前に、まずアスペクトに「織り込む」必要があります。

織り込まれたアスペクト クラスには、これらの静的メソッドが追加されます。

于 2012-10-19T19:45:50.663 に答える
5

AspectJ は、アスペクト クラスとターゲット クラスの両方を織り込む必要があります。

あなたのアスペクトクラスを編む

対象クラスの織り方

  • これらのメソッドへの呼び出しを追加します。
于 2015-08-21T16:51:47.017 に答える
2

問題は、AspectJ 製織プロセスが機能していないことです。aspectOfしたがって、AspectJ クラスではなく、通常の Java クラスでメソッドを呼び出しています。

これをテストする簡単な方法:

  1. Eclipse プラグインAJDTのようなツールを使用して織り込む
  2. Spring で簡単な JUnit テストを作成します。
  3. 最後に、WAS 内で動作するようにします。
于 2012-10-17T21:59:50.487 に答える