次の場合、メソッドに一致するポイントカットでアスペクトを作成する必要があります。
- 公開されている
- そのクラスには @Controller アノテーションが付けられています (最終的にはありません)
- そのパラメーターの 1 つ (多数のパラメーターを持つことができます) には、@MyParamAnnotation の注釈が付けられます。
最初の 2 つの条件は簡単だと思いますが、3 つ目の条件を Spring で実現できるかどうかはわかりません。そうでない場合は、次のように変更できます。
- そのパラメーターの 1 つは、タイプ com.me.MyType のインスタンスです (または何らかのインターフェースを実装します)。
これを達成することは可能だと思いますか? そして、パフォーマンスは良いでしょうか?
ありがとう
EDIT : マッチング方法の一例。ご覧のとおり、MyMethod には注釈が付けられていません (ただし、可能です)。
@Controller
public class MyClass {
public void MyMethod (String arg0, @MyParamAnnotation Object arg1, Long arg3) {
...
}
}
編集:@Espenの回答に基づいて、私が最終的に使用したソリューション。ご覧のとおり、条件を少し変更しました。クラスは実際には @Controller である必要はありません。
@Around("execution(public * * (.., @SessionInject (*), ..))")
public void methodAround(JoinPoint joinPoint) throws Exception {
...
}