問題タブ [pointcuts]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
java - AspectJ でのポリシー施行について
プロジェクト全体のポリシー適用に Aspectj を使用しています。
私が今実装しようとしているのは、グアバのPreconditions.check*
メソッドを使用した単純な検証を除いて、どのセッター メソッドにもロジックがあってはならないということです。
これは期待どおりに機能し、セッター以外のコードに対して警告を生成します。ただし、次のような構成では失敗します。
Preconditions.check*
したがって、私が探しているのは、呼び出しのパラメーター内で発生する限り、任意のコードを許可する構造です。そのようなポイントカットはありますか?
spring - Spring AOP 動的ポイントカット
CONTROLFLOWPOINTCUTSの目的は何ですか、それはどのような目的で、どこで使用できますか?
動的ポイントカットの利点は何ですか??
CONTROLFLOW POINTCUT について、例を挙げて説明します。ここでは、XML ファイルで構成されています (ソースから切り離されています)。
aspectj - ローカル メソッド コードをイントロスペクトし、ローカル メソッド内の変数を出力する AspectJ Pointcut
次のメソッドから文字列を出力できるポイントカットとアドバイスを書き込もうとしています-
ポイントカットが String emailID を見て、その値をアドバイスに出力する方法がわかりません。
java - アスペクトによる命名規則の適用
私は大学で AspectJ を始めたばかりで、ラボの 1 つで、すべての変数に数字を含めてはならないという名前付け規則をすべてのクラスに適用する必要があるという質問がありますtest1
。警告。皆さんが私を正しい方向に向けていただければ幸いです。
aspectj - AspectJ-アドバイスの実行をキャッチすることは可能ですか?
アドバイスCachingAspect
を使用して、適切に注釈が付けられたメソッドでいくつかの単純なキャッシュを実行するがあります。around
さて、私がやりたいのはaround
、特にキャッシングとアドバイスを追跡することです。
これまでのところ、アドバイス内でメソッド呼び出しをインターセプトすることはできますaround
が、アドバイス自体をインターセプトすることはできません。around
最終的には、アドバイスがアドバイスしているメソッドの署名を取得したいと思います。出来ますか?
前もって感謝します!
aspectj - 単純なAOPの例でのUnsupportedPointcutPrimitiveException
このサイトで簡単なaopの例を実行してみます。私は春のaopとaspectj、aspectjweaverjarを持っています:
この例を"AaBbCc".toLowerCase()のようにTest.javaで実行すると、この例外が発生します。
Spring AOPには「呼び出し」が含まれていませんが、アスペクト指向ウィービングが機能しないのはなぜですか、アイデアはありますか?ありがとうございました。
編集:
私の春の設定ファイルには、@aspect注釈付きクラスとのBean定義しかありません<aop:aspectj-autoproxy />
。私のjarファイルは次のとおりです:spring-aop-3.0.5、aopalliance、aspectjrt1.6.8、aspectjweaver1.5.0
java - AspectJ set-pointcut で以前の値を公開する
フィールド値の変更を検出する必要があります。以前の値と新しい値を比較したい。フィールド名またはそのタイプがわかりません。(詳細な背景はこちら。)指定されたクラスのサンプル:
私はこの側面を持っています:
問題は、args
がフィールドの現在の値ではなく、フィールド セットのジョイント ポイントで渡された値を公開していることです。このプレゼンテーションの 27 ページで、次のことがわかりました。
しかし、私のコード(注釈)ではまったくコンパイルされていないようです。私が試したとき:
それから私は得ました:
これはリフレクションを使用した実用的なソリューションです:
これは、リフレクションよりも優れたパフォーマンスのソリューションです (私は思います)。ただし、まだ大きなオーバーヘッドがあります (追加のフィールド、および各ターゲットへのアスペクト インスタンスのバインディング)。
そして、ここに親の宣言を使用したソリューションがあります:
3 つの選択肢があることを再確認します。
- フィールド値マップを使用した pertarget/perthis の周りのセット
- リフレクション付きのシングルトンアラウンドセット
- 宣言された親とフィールド値マップを使用したシングルトン アラウンド セット
最善の解決策は、ポイントカットから直接前の値を取得することです (リフレクションやポイントカット間のフィールド値の記憶なし)。出来ますか?そうでない場合、どの代替案が最高のパフォーマンスを発揮しますか?
その他の注意事項
set pointcut の以前の値に関するこの議論を見つけましたが、かなり古いものです。
このメカニズムはすべて、JSF セッション スコープの Bean の内部状態の変化を検出するためのものです - Google App Engine の修正。通常、このような Bean には 100 未満のフィールドがあります。すべてが 1 つのスレッドから呼び出されます。
java - アノテーションでインターフェースメソッドをオーバーライドするメソッドの @AspectJ ポイントカット
インターフェイスメソッドをアノテーションでオーバーライドするメソッドの実行に適用されるアスペクトポイントカットを書くにはどうすればよいですか? 例えば:
ポイントカットは、注釈自体がexecution(@MyAnnotation * *.*(..))
含まれている場合にのみ一致します。B.method()
これを行う別の方法はありますか?
java - 春に条件付き結合点を使用する
春に条件付き結合ポイントを使用する方法
私の要件では、メソッド名がinsertの場合、またはメソッド名がupdateの場合、またはメソッド名がdeleteの場合、およびメソッドに正確に3つの引数が必要な場合、ポイントカットを適用する 必要があります
これは私が書いたコードでした、
以下の行に何か問題があります。式の形式が正しくないというエラーが表示されます。
java - ポイントカットと特定の引数のマッチング
Springでは、特定の引数を持つメソッドに一致する式が必要です。
今、私はこの表現をしています
しかし、私が興味を持っている特定のクラスには4つのdeleteメソッドがあるので、特定の引数を一致させたいと思います。
こんなもの欲しい
これは私が書いたものであり、機能していません。私は何かが足りないのですか?