問題タブ [aspects]
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 - @target で定義されたポイントカットが機能しないのはなぜですか?
でドキュメントを保存する際に、Spring の側面を使用して追加のデータを保存しようとしていますMongoRepository
。ターゲットは次のインターフェイスです。
このポイントカットを使用すると:
このメソッドは、open
メソッドが呼び出される前に正常に実行されます。
しかし、注釈が付けられたインターフェースでのみ実行したい@InSearch
ので、そのようにポイントカットを定義しようとしました:
注釈の定義:
このポイントカットでは、メソッドbeforeSavingEntity
は呼び出されません。ログにエラーはありません。@target
についてのドキュメンテーションと との違いを理解できたかどうかはわかりません@within
。私も試してみましたが@within
、どちらもうまくいきませんでした。
拡張し、注釈が付けられsave
たインターフェイスを実装するクラスでメソッドの実行を選択するには、このポイントカットをどのように定義する必要がありますか?MongoRepository
@InSearch
ありがとうございました!
java - カスタム注釈を使用して独自のアスペクトを作成する
私は Annotations と StackOverflow が初めてで、これが私の最初の質問です。メソッドの実行をトレースしてログに記録するのに役立つカスタム注釈を作成しようとしています。
例えば:
ここで、メソッドmethodA()
が実行されるたびに、「クラス A で methodA に入っています」と伝えるファイルにログを記録し、methodA が終わったら「クラス A で methodA を終了しています」と伝えたいと思います。多くのクラスとメソッドがあります。
これは AspectJ を使用して実行できることを知っています。ポイントカットとジョインポイントを定義することでそれを行いました。しかし、カスタム注釈を使用してそれを行いたいです。
誰かがこれをどのように行うかについて私を導くことができれば、それは非常に役に立ちます.
前もって感謝します。
spring - Jetty で Spring アスペクトを使用する
Spring 3.1 で Aspects を使用するアプリケーションがあります。Tomcat 7 で完全に動作します。推奨されるメソッドは期待どおりに呼び出されます。
Jetty で動作するようにします。私は以前、Spring 2.0 と Jetty で Aspects を使用しましたが、JVM エージェントを追加した以外は大きな問題はありませんでした。しかし、私は Jetty 6.22 と私の Spring 3.1 アプリケーションではうまくいきませんでした。したがって、javaagentでJettyを起動します
-javaagent:./spring-instrument-3.1.3.RELEASE.jar
Spring Instrument jar が私の CWD にある場所。
StackOverFlow にも同様の質問がありますが、誰も有効な答えを見つけることができませんでした。
c# - アスペクトを使用して INotifyPropertyChanged を自動的に実装できますか
PostSharp を使用してこの種のコードを変更する方法はありますか:
次のようなものに:
?
java - ポイントカットを動的にスレッド固有にすることはできますか?
特定の条件下ですべてのパブリック メソッド呼び出しを追跡したいと考えています。しかし、この追跡によってシステム全体のパフォーマンスができるだけ損なわれないようにしたいと考えています。
指定されたスレッドに対してのみポイントカットを動的に「オン」にして実行する方法が必要であり、このオン (およびオフ) をコードから動的に呼び出すことができる必要があります。
つまり、私の Java コードが特定のことが起こったことを発見した場合、それはそれ自身のスレッドのポイントカットを有効にします。このポイントカットは、すべてのパブリック メソッド呼び出しをログに記録し、しばらく (またはいくつかのインターセプト) の後、ポイントカットはオフになります。
もちろん、「...getCurrentThread().equals(myMonitoringThread) && monitoringEnabled」のようなアドバイスでコードを呼び出すこともできますが、それはアドバイスがすべてのスレッドのすべてのパブリック メソッドに対して実行され、常にこのコードを実行することを意味します。アプリケーション全体のパフォーマンスが確実に低下します。
私が望むのは、有効な時間だけ選択したスレッドのパフォーマンスをペナトリーに分離し、残りのスレッドに影響を与えないことです。
誰かがそれを行う方法について知っていますか?
ありがとうトーマス
javascript - spect.around を使用するが、互いに呼び出しているメソッドをチェックする
put()
私は、Dojo ストアの周辺およびDojo ストアに対して、いくつかの特定のコードを実行したいと考えていますadd()
。私が抱えている問題は、JSON REST ストアの場合、JsonRest.jsadd()
は次を呼び出す関数にすぎないことですput()
。
aspect.around()
そのため、 withを使用すると、へのスタブとして実装するストアで作成されたストアにコードを適用すると、コードが2add()
回実行されることになります。add()
put()
ほとんどの店がそうしていることを私は認識していることに注意してください. メソッドのネストがあるかどうかに関係なく、ソリューションがどのストアでも動作することが保証されるようにしたいだけです。
Dojo 自身Observable.js
も同じ問題を抱えています。これは彼らがそれに対処する方法です:
私の質問は次のとおりです。既存のコードを変更して、メソッド内にあるかどうかを確認し、コードを 2 回実行しないようにする簡単な「短い」方法はありますか?
私はそれを試してみましたが、厄介でハッキーなコードになってしまいました. 私は何かが欠けていると確信しています...
これが私の既存のコードです:
java - アスペクトと注釈を使用するデータ バインダーはありますか?
私は、swing、spring、および hibernate を使用して Java アプリケーションを作成したいと考えています。
データ バインダーを使用して、GUI に Bean の値を入力したいと考えています。また、Bean の更新を GUI に反映させたいと考えています。
春には DataBinder を使用してそれを行う方法があるようですが、私が理解している限りでは、Bean にプロパティ変更コードを自分で実装する必要があり、Bean のプロパティをセッター メソッドに接続する必要があります。私が嫌いな文字列を使用したguiの。
Bean でのプロパティ変更サポートの手動実装を防ぐために、これに出くわしました。
https://github.com/damnhandy/Handy-Aspects
現在、これと一緒に使用できるデータ バインディング フレームワークを探しています。これは、バインダーの構成を最小限に抑えて簡単にするための注釈もサポートしています。
プロパティの名前を取る注釈を使用して、GUI のセッターに注釈を付けることができれば幸いです。さらに良いことに、プロパティと同じ名前の場合は、自動的に接続されます。
たとえば、名前と年齢のプロパティを持つ Person クラスがある場合、次のように GUI を構成したいと思います。
このようなことはありますか?
java - Spring: トランザクション固有のリソースを追加する
リソース/状態を既存のトランザクションに追加/取得する方法を見つけようとしています。これは春に可能ですか?
私が達成しようとしているのは、以下の疑似コードに似ています。
似たようなの見つけた
ただし、これにより、トランザクションの現在のスレッドにリソースが追加されます。リソース トランザクションをバインドのみにする方法はありますか?
私の実際のコードでは、Spring jdbc の DataSourceTransactionManager をトランザクション マネージャーとして使用しています。
助けてくれてありがとう:)