問題タブ [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.
spring - 複数のパッケージに単一のポイントカットを指定する方法
spring mvc ベースのアプリケーションでアクティビティをログに記録するために Aspect を使用しています。@controllerアノテーションを使用して、アプリケーション内のコントローラーを定義しています。私は2つの異なるパッケージに2つの異なるコントローラーを持っています
- com.package1 にはコントローラー 1 クラスが含まれています。名前を AController にしましょう。
- com.package2 にはコントローラー 2 クラスが含まれています。名前を BController としましょう。
を使用して、コントローラーの特定のパッケージにアスペクトを適用できます
私の質問は、 expression(* package1. . . (..))**で複数の異なるパッケージを指定する方法です。
現在、パッケージごとに 1 つの個別のポイントカットを宣言しており、側面では、各ポイントカットに対して 1 つの個別aop:before
のaop:after
エントリを宣言しています。しかし、これは複数のパッケージのポイントカットを定義する理想的な方法だと思います。
multithreading - 同じクラスの別のメソッドによって呼び出されるメソッドに対してアスペクト アドバイスを実行する方法
Spring AOP について困っています。アスペクトを使用してメソッドをトリガーしようとしていますが、アスペクトをトリガーするメソッドも同じクラスのメソッドであり、アスペクトが機能していません(ちなみにエラーはありません)。このように
どんなアイデアでも大歓迎です
ありがとう
java - Spring AOP ポイントカットが抽象メソッドに適用されない
私は次のポイントカットを持っています:
そして、次の抽象クラス:
私のポイントカットは、Poller.doPoll() ではなく、Poller.toString() を呼び出した場合にのみ適用されます。Poller クラスまたはそのサブクラス内で任意の数の引数を取る任意のメソッドに適用されることを期待しています。そうでないのはなぜですか?
spring - Spring @RequestMapping へのポイントカット
Spring プロジェクトで AOP を有効にしようとしています。@RequestMapping が完了した後にコード (セッションクリーニング) を実行したい。これが私のapplicationContext.xmlです(参照されたリソースをロードするだけです
セキュリティ コンテキスト:
私のサービスコンテキスト:
私のWebコンテキスト:(短さのために省略されたBean定義!!)
これはアスペクトクラスのインターフェースです
実装は簡単 です @Before("pc()") public void print(){ System.out.println("About to make call to print Hello World" }
次のような他の表現も試しました。
- @Pointcut("execution(@org.springframework.web.bind.annotation.RequestMapping public * appname.*(..))")
- その他多数
運がない。問題は式ではなく (すでに 10 ~ 15 の型を試しました...)、コンテキストで考慮されていないクラスだと思い始めました。
答えについては、次の点を考慮してください。
- appname という名前は、明らかに意図されたものです。
- aop:config と aop:aspectj-autoproxy を挿入するのは試しにすぎません。他のスレッドで、applicationContext によってロードされるすべてのファイルで構成を有効にする必要があることも読んだからです。私も1つだけ挿入しようとしましたが、結果はありませんでした
- コントローラーには、注釈付きインターフェース + 注釈付き実装があります。インターフェイスに注釈を付けたり、完全に削除したりせずに試してみましたが、結果はありませんでした
助けはありますか?:)
編集: axtavt への応答で..申し訳ありませんが、web.xml を追加するのを忘れていました。ここにその一部があります
web-context.xml ファイルを介して contextConfigLocation を正しくロードします。すいません忘れてました(-_-;)
EDIT2:axtavtの提案により、私の間違いに続いて答えが得られました!ありがとう!
spring - 注釈付き引数の Spring AOP ポイントカット
次のようなメソッドがあるとします。
@CustomAnnotation で注釈が付けられた引数を持つすべてのメソッドを選択できるポイントカット式はありますか? もしそうなら、「値」引数にアクセスする方法はありますか?
aop - コンテキスト(ApplicationContext)を引数としてlogBefore Method(Aspectのメソッド)に渡す方法は?
遅延読み込みの問題を回避するアスペクトを実装したい。では、logBefore メソッドの引数として context(Application Context) を渡す方法は? 署名ポイントカットは、上記のメソッド (「???」を作成する場所) を定義し、このメソッド (logBefore) が結果タイプとして「Set」および「slm. aoa.buisiness.facade」をパッケージとして
ご協力ありがとうございます。
java - 継承によるポイントカットの混乱
メソッドのすべての実行に一致するポイントカットを書くことに混乱しています。class のすべてのメソッド実行に一致するはずのポイントカットを試しましたAlpha
:
次のクラス階層で
Main-program が -instance を呼び出す場合、alphaMethod
アドバイスBeta
は期待どおりに呼び出されbetaMethod
ますalphaMethod
が、アドバイス内で呼び出す Main-program 呼び出しは呼び出されず、その理由がわかりません。
アスペクト定義:
メインメソッド:
java - 継承されたものを含むクラスのすべてのメソッドのポイントカット
私はaopとaspectjをいじっていて、(私にとって)予期しない動作を発見しました。
spectj-docsで、次の example-pointcut を見つけました。
次のクラス定義の場合 (元の例を少し変更しました):
その例の説明には次のように記載されています。
[ポイントカット] は、void を返し、Middle で宣言または継承された引数を持たない public メソッドのすべてのメソッド実行を選択します。これらのメソッドが Middle のサブクラスでオーバーライドされている場合でも同様です。
この例は私にとってはうまく機能していますが、クラスSub
がオーバーライドされていない場合m()
、外部からインスタンスへのメソッド呼び出しm
はSub
傍受されません。これはドキュメントに違反していませんか?
プロキシの使用が原因で、継承されたクラスのポイントカットで別の問題が発生しました。ただし、この場合、プロキシを使用してもこの動作が発生することはありません。これは、プロキシがプロキシされるすべてのクラスにメソッドを提供する必要があるためです。それとも私は何かを逃しましたか?
私のアスペクト定義:
java - AspectJ で特定のアノテーションを持たないメソッドを一致させる方法
@Invisible というカスタム アノテーションがあります。ここで、@Invisible アノテーションを持たないメソッドのすべての呼び出しに一致させたいと考えています。これどうやってするの?(注釈スタイル開発あり)
私の最初の試みは:
しかし、これはうまくいかないようです...
言い換えれば、メソッドに Invisible アノテーションがある場合、それを無視したいということです。それ以外の場合は、アドバイスに従っていくつかのコードを実行したい...