2017-03-29 6 views
-1

唯一重要なポイントは、ターゲットメソッドのパラメータの量であるポイントカットを定義したいと思います。たとえば、私は以下のポイントカット定義を持っています。AspectJのポイントカットでパラメータ数を定義する

@Pointcut("@annotation(org.springframework.web.bind.annotation.RequestMapping) 
      && execution(* pkg..*.*(pkg.Obj1, pkg.Obj2, pkg.Obj3))") 

私は予想されるパラメータタイプをハードコードしたくありませんが、私はこのポイントカットに対して3つのパラメータだけを持つメソッドを取得したいと思います。パラメータの詳細を指定せずに、上記のポイントカットに対して3つのパラメータを設定する必要があるという情報だけで、これをどのように達成できますか?

たとえば、私はそれを一致させたい。

// in package pkg.* 
@RequestMapping 
public test(ObjX objX, ObjY objY, ObjZ objZ) { 
    //etc 
} 

ただし、以下に一致しません。

// also in package pkg.* 
@RequestMapping 
public test(ObjX obj) { 
    //etc 
} 

または

// also in package pkg.* 
@RequestMapping 
public test(ObjX objX, ObjY objY) { 
    //etc 
} 

または

// also in package pkg.* 
@RequestMapping 
public test(ObjX objX, ObjY objY, ObjZ objZ, ObjQ objQ) { 
    //etc 
} 

答えて

0

私はそれを見つけた、これを達成するための方法は、パラメータとして*与えることです。戻り値の型、他のクラス&メソッド名の*の同様の用法で

@Pointcut("@annotation(org.springframework.web.bind.annotation.RequestMapping) 
      && execution(* xxx.yyy.zzz..*.*(*, *, *))") 

関連する問題