問題タブ [pointcut]

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.

0 投票する
1 に答える
1121 参照

java - インスタンスの構築に続く単一の呼び出しに対するアスペクトのポイントカットとアドバイス

私自身の実験とここのドキュメントに基づいています: http://www.eclipse.org/aspectj/doc/released/faq.html#q:initializationjoinpoints

これ:

これは次のようになります。

スーパー タイプかテスト タイプかに関係なく、完全に構築された後にインスタンスに対してアクションを実行できるように、ポイントカットに基づいてアドバイスを作成しようとしています。

私はこれを試しました:

ただし、Test のインスタンスを作成するときに 2 回呼び出されます。Super が初期化された後に 1 回、Test が初期化された後にもう一度。

私はこれを試しました:

そして、それも 2 回呼び出され、上記と同じように Test のインスタンスを作成します。

最後に、私はこれを試しました:

一度しか呼び出されないため、これはうまく機能しますが、ここで説明したように、新しく作成されたインスタンスへの参照を取得するために target() を使用することはできません。

前回と同時に実行するだけでなく、インスタンスへの参照を取得する方法はありますか? または、最後まで待つことができるように、アスペクトが再び起動するかどうかを確認する方法はありますか?

ありがとう。

更新: クラスを json との間でシリアル化および逆シリアル化しており、逆シリアル化中に構築後にコードが適切に実行されるようにしたいため、リフレクションで動作するためにもこれが必要です。

0 投票する
2 に答える
18547 参照

java - コンストラクター オブジェクトの AspectJ ポイントカット

AspectJ を使用して、初期化されたすべてのオブジェクトにいくつかのメソッドを注入する必要があります。

私はこれを使って考えました:

オブジェクトの初期化をポイントカットするため、これらのメソッドを他のすべてのオブジェクトの一部であるオブジェクトに直接注入できます。

しかし、うまくいきません。理由はわかりますか?または、初期化されたすべてのオブジェクトがポイントカットされることを 100% 確実にする他の方法は何でしょうか? *.new は、文字列、リストなどには機能しません。

ありがとうございました!

0 投票する
1 に答える
966 参照

java - Aspectj 宣言エラーが正しく機能しない

メソッド シグネチャの変更をキャプチャし、それが発生したときにエラーをスローしようとしています。しかし、宣言エラーは期待どおりに機能していません

これは、常にこのメソッドの呼び出しと一致しています。

しかし、このポイントカットを @Before に移動すると、メソッド シグネチャが変更されない限り一致しなくなります。

ポイントカットに関する @DeclareError と @Before の動作が異なる理由について何か考えはありますか?

ありがとう

0 投票する
1 に答える
532 参照

eclipse - 引数リストに関係なく一致するSpring @AspectJ @Pointcut

@Pointcut引数リストに関係なく、クラス内のすべてのパブリック メソッドに一致する Spring @AspectJ ポイントカット () 式を作成するにはどうすればよいですか?

特定のアノテーションを持つ特定のクラスのすべて@AfterThrowingのパブリック メソッドのポイント カットを持つアスペクトが必要です(以前の SO の質問で他の誰かが望んでいたものと同様)。現在、私の側面は次のようになっています。@MyAnnotation

Eclipse Spring プラグインは、(ソース コード ウィンドウで矢印の注釈を使用して) これがメソッドを正しくアドバイスしていることを示しcom.example.Service.getNames()ます。ただし、 などの引数を持つメソッドcom.example.Service.getTimes(String name)が推奨されていることを示すものではありません。

アノテーション付きのメソッドに@Pointcut引数がないからですか?引数リストに関係なく、ポイントカットをすべてのメソッドにするにはどうすればよいですか? @Pointcutそれとも、クラスの引数リストの種類ごとに個別に持つ必要がありcom.example.Serviceますか?

0 投票する
1 に答える
1007 参照

java - ポイントカット式がカスタム注釈で機能しない

次のCustom Annotationがあります。

実装クラス

アスペクト

上記のポイントカットを1つずつ試しました。ただし、クオーツがメソッドを呼び出すと、AOP が機能しません。誰か助けてください。

0 投票する
1 に答える
406 参照

java - Pointcut 実装でメソッド パラメーター インスタンスを取得する

次のように、ポイントカット実装からインターセプトされたメソッドのパラメーター値を取得する必要があります。

傍受された方法:

およびアスペクトの実装で

afterThrowing メソッドで「mapValues」パラメーターのインスタンスを取得することは可能ですか。誰かに光を当ててください。

0 投票する
1 に答える
1743 参照

java - LTW のプロパティ ファイルから Aspectj Pointcut 定義を読み取る

Guiceアプリケーションでaspectj LTWを使用しており、構成ファイルから制御されるアスペクトのポイントカット定義を作成しようとしています。例えば:

私が持っている可能なすべてのオプションは何ですか?

ありがとう