java - AspectJでメソッドを注釈付き引数と一致させる方法

java methods annotations aspectj aop

私はこのような方法と一致させたいです:

@Foo
public void boo(@Baz Bar bar) { ... }


基本的に:


メソッドには@Fooアノテーション(これはexecution(@Foo * *(..)) && @annotation(foo)と一致します)があります。
可変量のパラメータを持つことができ、
そのうちの1つには@Bazアノテーションが必要です。
その注釈付き引数(bar)をさらに処理する必要があります。


メソッドに@Fooアノテーションが含まれているが@Bazアノテーションが欠落している場合、実行時ではなくウィービング時に可能であれば、できるだけ早くエラーを取得します。

どうやってやるの?
答え
public pointcut annArg(): execution(@Foo * *(.., @Baz (*),..));

declare error :execution(@Foo * *(..))&&!annArg() :"error";


残念ながら、args(..、arg、..)で一致する引数を取得することはできません。ただし、thisJoinPoint.getArgs()およびリフレクションAPIを使用して、注釈付きの引数を取得できます。または、引数の位置がわかっている場合は、args(..、arg);のようなものを使用できます。
関連記事

java - 金額をDoubleとして格納しますが、BigDecimalを使用して値を計算します

java - Java(Clojure)から書き込み、Paraviewで読み取ることができるデータ形式は何ですか?

java - MATLAB Javaクラスパスの問題

java - 2つの基準をHibernate ORする

java - コンソールJavaアプリケーションの一般的な統合テストフレームワークはありますか?

java - Java SEを使用してXMLノードを削除する

java - clojure / enliveを使用してテーブル行の属性クラスを動的に設定するにはどうすればよいですか?

java - Swingフォーカスが失われたinputverifier

java - Android:ボックスとして表示されるキャラクター

java - Javaと強力な暗号化をサポートするアーカイブを探しています[終了]