Aspectjオプションのパラメーターバインディング

Aspectjが引数を使用してメソッド引数をバインドするようにしたいと思います。

このようなもの:

    @Before("@annotation(authorized) && args(java.util.String)")
    public void authorize(JoinPoint joinPoint, Authorized authorized, String str)

ただし、String引数が存在することは期待できません。String引数を持つメソッドだけでなく、そのアノテーションを使用するすべてのメソッドにアドバイスを適用したいと思います。

アドバイスされたメソッドにString引数がない場合はstr、null値を入力したいと思います。これは可能ですか?または、使用する唯一のオプションjoinPoint.getArgs()ですか?

kriegaex

アンディの答えへのコメントであなたが尋ねた質問に対する答えがあります:

引数の量が不明であるが、特定のタイプの引数で終わらないメソッドにアドバイスすることは可能でしょうか?

package de.scrum_master.app;

import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;

@Retention(RetentionPolicy.RUNTIME)
public @interface Authorized {}
package de.scrum_master.app;

public class Application {
    @Authorized static void bla(String string, int i, int j) {}
    @Authorized static void baz(String string, int i, Integer integer) {}
    @Authorized static void zot(String string) {}
    @Authorized static void bar(Integer integer) {}
    @Authorized static void foo() {}

    public static void main(String[] args) {
        foo();
        bar(new Integer(11));
        zot("xxx");
        baz("yyy", 123, new Integer(22));
        bla("zzz", 123, 456);
    }
}
package de.scrum_master.aspect;

import org.aspectj.lang.JoinPoint;
import org.aspectj.lang.annotation.Aspect;
import org.aspectj.lang.annotation.Before;

import de.scrum_master.app.Authorized;

@Aspect
public class MyAspect {
    @Before("@annotation(authorized) && execution(* *(..)) && !execution(* *(.., Integer))")
    public void authorize(JoinPoint joinPoint, Authorized authorized) {
        System.out.println(joinPoint);
    }
}

コンソール出力:

execution(void de.scrum_master.app.Application.foo())
execution(void de.scrum_master.app.Application.zot(String))
execution(void de.scrum_master.app.Application.bla(String, int, int))

あなたが見ることができるように、二つの方法bazおよびbar ない特定のタイプで終わる-Integerこの例では、 -マッチング対象から除外されています。

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

パラメータSwiftUIのオプションのバインディング

分類Dev

Laravelのオプションパラメータのルートバインディング

分類Dev

オプションパラメータを使用した関数のバインディング

分類Dev

androidデータバインディングユニットテストエラーデータバインディングコンパイラオプションの解析に失敗しました。パラメータ:

分類Dev

MVCオプションのボディパラメーター

分類Dev

パラメータをCrystalReportsに渡す際の遅延バインディングエラー時に厳密なオプション

分類Dev

Laravelのオプションのルーティングパラメーター

分類Dev

複数のオプションパラメータルーティング

分類Dev

Cでオプションのコマンドラインパラメータをコーディングする方法

分類Dev

オプションのバインディングを使用したオプションのパラメーターの再宣言はサポートされていますか?

分類Dev

AspectJ:複数のパラメーターを持つメソッドの 'args()'によるパラメーターバインディング

分類Dev

Angularディレクティブのオプションパラメータ

分類Dev

ループ内のpdoバインディングパラメータ

分類Dev

ループ内のpdoバインディングパラメータ

分類Dev

タイプパラメータのオプションパラメータ?

分類Dev

wpfコレクションのサブプロパティデータバインディングパス

分類Dev

アニメーションプロパティと複数のアニメーションのプロパティバインディング

分類Dev

imgタグのグラデーションプロパティ

分類Dev

Androidのメーカー3.6でコンパイルが、ショーのエラーをデータバインディング

分類Dev

URLとの双方向バインディングはパラメータとフォーム値を取得します(オプションとスライダーバー)

分類Dev

パンダでのSQLインジェクション。SQLAlchemyのパラメータへのバインディングリスト

分類Dev

VXMLサブダイアログのオプションのパラメータ

分類Dev

複数のパラメーターを持つデータバインディングバインディングアダプターが機能しない

分類Dev

派生をオーバーライドする抽象クラスのオプションのパラメータ

分類Dev

Swiftのオプションのバインディングにはまだnullデータがあります

分類Dev

ASP.NET MVC5でのオプションパラメーターのルーティング

分類Dev

Http.RouteAttributeを使用したオプションのパラメーターのルーティング

分類Dev

オプションの最初のパラメーターを使用したMVCルーティング

分類Dev

MVCルーティングのオプションの文字列パラメーターと醜いURL

Related 関連記事

  1. 1

    パラメータSwiftUIのオプションのバインディング

  2. 2

    Laravelのオプションパラメータのルートバインディング

  3. 3

    オプションパラメータを使用した関数のバインディング

  4. 4

    androidデータバインディングユニットテストエラーデータバインディングコンパイラオプションの解析に失敗しました。パラメータ:

  5. 5

    MVCオプションのボディパラメーター

  6. 6

    パラメータをCrystalReportsに渡す際の遅延バインディングエラー時に厳密なオプション

  7. 7

    Laravelのオプションのルーティングパラメーター

  8. 8

    複数のオプションパラメータルーティング

  9. 9

    Cでオプションのコマンドラインパラメータをコーディングする方法

  10. 10

    オプションのバインディングを使用したオプションのパラメーターの再宣言はサポートされていますか?

  11. 11

    AspectJ:複数のパラメーターを持つメソッドの 'args()'によるパラメーターバインディング

  12. 12

    Angularディレクティブのオプションパラメータ

  13. 13

    ループ内のpdoバインディングパラメータ

  14. 14

    ループ内のpdoバインディングパラメータ

  15. 15

    タイプパラメータのオプションパラメータ?

  16. 16

    wpfコレクションのサブプロパティデータバインディングパス

  17. 17

    アニメーションプロパティと複数のアニメーションのプロパティバインディング

  18. 18

    imgタグのグラデーションプロパティ

  19. 19

    Androidのメーカー3.6でコンパイルが、ショーのエラーをデータバインディング

  20. 20

    URLとの双方向バインディングはパラメータとフォーム値を取得します(オプションとスライダーバー)

  21. 21

    パンダでのSQLインジェクション。SQLAlchemyのパラメータへのバインディングリスト

  22. 22

    VXMLサブダイアログのオプションのパラメータ

  23. 23

    複数のパラメーターを持つデータバインディングバインディングアダプターが機能しない

  24. 24

    派生をオーバーライドする抽象クラスのオプションのパラメータ

  25. 25

    Swiftのオプションのバインディングにはまだnullデータがあります

  26. 26

    ASP.NET MVC5でのオプションパラメーターのルーティング

  27. 27

    Http.RouteAttributeを使用したオプションのパラメーターのルーティング

  28. 28

    オプションの最初のパラメーターを使用したMVCルーティング

  29. 29

    MVCルーティングのオプションの文字列パラメーターと醜いURL

ホットタグ

アーカイブ