問題タブ [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.
aop - AspectJのポイントカットとアドバイス
特定のカテゴリに属さないアイテムが追加されている場合は、そのような追加が許可および禁止されている3つを除いて、警告を発行するポリシーを適用する必要があります。
これまでのところ、アイテムを見つけて警告を出すことはできますが、追加を停止する方法がわかりません。
たとえば
許可されるカテゴリ靴と靴下
しかし、野菜アイテムをインベントリに追加しようとすると、「カテゴリは許可されていません../nアイテムはインベントリに追加されません」という警告が表示されます.....次に次のアイテムに進みます....
これは私がこれまでに書いたものです.....
aop - 新しいアイテムを追加するためのポリシー施行-ASPECTJ
特定のカテゴリに属さないアイテムが追加されている場合は、そのような追加が許可および禁止されている3つを除いて、警告を発行するポリシーを適用する必要があります。
これまでのところ、アイテムを見つけて警告を出すことはできますが、追加を停止する方法がわかりません。
許可されるカテゴリ靴と靴下
しかし、野菜アイテムをインベントリに追加しようとすると、「カテゴリは許可されていません../nアイテムはインベントリに追加されません」という警告が表示されます.....次に次のアイテムに進みます....
これは私がこれまでに書いたものです.....
私は周りのアドバイスを正しく使用していないことを知っています...
java - インターフェイスではなく実装クラスにアスペクトを追加する
いくつかのインターフェースを実装するクラスがあります。クラスの特定のインターフェイスではなく、クラス全体にポイントカットを追加したいと思います。
Spring AOPでどのように行うことができますか?非インターフェースクラスにアスペクトを適用することは可能ですか?
java - AspectJ set-pointcut で以前の値を公開する
フィールド値の変更を検出する必要があります。以前の値と新しい値を比較したい。フィールド名またはそのタイプがわかりません。(詳細な背景はこちら。)指定されたクラスのサンプル:
私はこの側面を持っています:
問題は、args
がフィールドの現在の値ではなく、フィールド セットのジョイント ポイントで渡された値を公開していることです。このプレゼンテーションの 27 ページで、次のことがわかりました。
しかし、私のコード(注釈)ではまったくコンパイルされていないようです。私が試したとき:
それから私は得ました:
これはリフレクションを使用した実用的なソリューションです:
これは、リフレクションよりも優れたパフォーマンスのソリューションです (私は思います)。ただし、まだ大きなオーバーヘッドがあります (追加のフィールド、および各ターゲットへのアスペクト インスタンスのバインディング)。
そして、ここに親の宣言を使用したソリューションがあります:
3 つの選択肢があることを再確認します。
- フィールド値マップを使用した pertarget/perthis の周りのセット
- リフレクション付きのシングルトンアラウンドセット
- 宣言された親とフィールド値マップを使用したシングルトン アラウンド セット
最善の解決策は、ポイントカットから直接前の値を取得することです (リフレクションやポイントカット間のフィールド値の記憶なし)。出来ますか?そうでない場合、どの代替案が最高のパフォーマンスを発揮しますか?
その他の注意事項
set pointcut の以前の値に関するこの議論を見つけましたが、かなり古いものです。
このメカニズムはすべて、JSF セッション スコープの Bean の内部状態の変化を検出するためのものです - Google App Engine の修正。通常、このような Bean には 100 未満のフィールドがあります。すべてが 1 つのスレッドから呼び出されます。
spring - Spring AOP ポイントカットの形式が正しくありません
スレッド「メイン」での例外 org.springframework.beans.factory.BeanCreationException: 'org.springframework.aop.aspectj.AspectJPointcutAdvisor#0' という名前の Bean の作成中にエラーが発生しました: Bean のインスタンス化に失敗しました。ネストされた例外は org.springframework.beans.BeanInstantiationException: Bean クラスをインスタンス化できませんでした [org.springframework.aop.aspectj.AspectJPointcutAdvisor]: コンストラクターが例外をスローしました。ネストされた例外は java.lang.IllegalArgumentException: Pointcut is not well-formed: Expect 'name pattern' at character position 49 execution(*com.idol.performers.Performer.perform(..)
ポイントカットの何が問題になっていますか? 本にはこう書いてある
私のxml:
java - アノテーションでインターフェースメソッドをオーバーライドするメソッドの @AspectJ ポイントカット
インターフェイスメソッドをアノテーションでオーバーライドするメソッドの実行に適用されるアスペクトポイントカットを書くにはどうすればよいですか? 例えば:
ポイントカットは、注釈自体がexecution(@MyAnnotation * *.*(..))
含まれている場合にのみ一致します。B.method()
これを行う別の方法はありますか?
java - Spring-AOP ポイントカットと継承に関する明確化
次の例のクラスがmy.package
...
そして、次のSpring-AOPポイントカット...
Bar のインスタンスで上記のポイントカットに適用されたアドバイスの結果は何ですか? 特に...
ポイントカットが継承とどのように相互作用するかについての基本的な真実が欠けていると思うので、内部の説明/ドキュメントはおそらく大いに役立つでしょう。
java - SpringAOP-アノテーション付きのすべてのメソッドのポイントカット
私はポイントカットを定義しようとしています。これは、(すなわち)で注釈が付けられたすべてのメソッドをキャッチし@CatchThis
ます。これは私自身の注釈です。
さらに、タイプのメソッドの最初の引数にアクセスしたいと思いますLong
。他の議論もあるかもしれませんが、私はそれらを気にしません。
編集
これは私が今持っているものです。私が知らないのは、で注釈が付けられたメソッドの最初のパラメーターを渡す方法@CatchThis
です。
spring - AOP ポイントカット式をチェックする
のようにポイントカット式をチェックする必要があります。私はこの豆を持っています:
私の aop ポイントカット式では、Bean プロパティ「logLvl」の値を確認するためにチェックを行う必要があります。
式が機能しません...何を変更すればこのチェックを行うことができますか?