問題タブ [aspect]
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 - ソースを変更できるJava(Android)のアスペクト指向フレームワークを探しています
私は.class自体ではなく.javaソースファイルを変更するアスペクト指向のフレームワークを見つけようとしていましたが、これまでのところ運がありませんか? 私はそれがばかげた考えかもしれないことを知っています...しかし、私が欲しいのは、.classに貼り付けられた正確なコードを理解することです.
基本的に、巨大な Android プロジェクトにロギングやその他の側面を適用しようとしています。私は AspectJ で遊んでいましたが、問題の 1 つは、既にメソッド宣言の制限に達しており、AspectJ を追加して .apk にパックすることができないことです。ただし、AspectJ ライブラリがないと、クラス定義例外が発生しません (原因: java.lang.NoClassDefFoundError: org.aspectj.runtime.reflect.Factory)
postsharp - Postsharp をテスト可能にする方法
依存性注入は Postsharp では機能しません。アスペクトをテスト可能にするにはどうすればよいですか? 自分のアスペクトにログインするための具体的なクラスを作成することは本当に避けたいです。
メソッドを単体テストしているときにアスペクトを実行したくありません。メソッドをテストしている場合、ログの側面が起動したり、テスト中に具体的なロガーを作成したりしたくありません。
私は Postsharp のアイデアが大好きで、実際に使用したいと思っていますが、これら 2 つの問題が私にとってはあまりにも多くの問題を引き起こしているようです。
何か案は?
java - AspectJ NoResultException をキャッチして代わりに null を返す方法
NoResultException
AspectJ を使用して a をキャッチし、代わりに null を返したいと考えています。
(明らかに私はアスペクト初心者です)
クエリを実行するメソッドは次のとおりです。
私はこれらの呼び出しを数百回行っていますが、すべての呼び出しに a を散らかして null の結果try/catch
に変更したくありません。NoResultException
そこで、例外をキャッチして結果を に変更するアスペクトを書きたいと思いnull
ます。
これがアスペクトコードです(注釈を使用していることに注意してください)。このようなもの:
戻り値を null に変更するにはどうすればよいですか
c++ - (C++) 派生クラスの AspectC++ インターセプト メソッド
ばかげた質問かもしれませんが、何時間も検索しても答えが見つかりませんでした。
AspectC++ を使用すると、ポイントカットを定義できます。ポイントカットは、一致するとインターセプトされるものを表します。たとえば、私はできる
advice
ポイントカットを使用するものは、pc
class の何らかのメソッドへの呼び出しをインターセプトするようにしますBase
。これは、後で のサブクラスが作成された場合でも機能Sub
しBase
ます:pc
のメソッドへの呼び出しもインターセプトしSub
ます。今、私が望むのは、 のメソッドのみをインターセプトするSub
こと、つまり のメソッドがSub
に存在しないことBase
です。それ自体のメソッドではなく、最終的に作成されるpc()
サブクラスのメソッドをインターセプトするにはどうすればよいでしょうか?Base
Base
java - @EnableAspectJAutoProxy を使用した Bean の「手動」ウィービングはアスペクトを見つけました
私は完全に非 XML の Spring セットアップを使用しており、自分のクラスで正常に使用@EnableAspectJAutoProxy
して、と@Configuration
の組み合わせでアスペクト クラスを見つけています。@Aspect
@Component
しかし、春のコンテキストで作成されていないインスタンスをオンデマンドで織り込み/強化する必要があるところまで来ましたが、見つけることができるのはProxyFactory
. しかし、その後、 でアドバイスを手動で追加する必要がありますProxyFactory.addAdvice(..)
。これは、(たとえば) で一度書いたものです@Before
。
私はそれらを再び書き直したくありません。
@EnableAspectJAutoProxy
注釈を使用して、内部で作成された (私は推測しますか?) ファクトリへの参照を取得する方法はありますか? 私は次のようなことができるように:
または、どのアドバイスがアプリケーションに既に存在するかを把握できるファクトリをインスタンス化します。
私は周りを見回そうとしましたが、答えを見つけることができないようです。私が見るのが苦手なだけなのかもしれません。あなたが私を助けることができれば、事前に感謝します!
java - パフォーマンス上の理由から、Spring の @Configurable に代わるものはありますか?
高性能でなければならないコードのセクションで、管理されていないSpringインスタンスに@Configurable Beanを使用しています。私たちは new オペレーターで多くの管理されていない Bean を使用しており、プロファイリングでは、 @Configurable アノテーションの使用がかなり遅くなっていることに気付きました。
この特定のセクションのためだけに、コンテキストから Bean を取得するより高速な方法 (直接の applicationContext.getBean() のみ) が必要です。これを行うために IoC を放棄することはわかっていますが、これは特別なシナリオであり、通常のパターンではありません。
ウィービングにはCTWを使用していますが、アプリケーションコンテキストを取得するために舞台裏でSpringが使用しているメカニズムを知りたかったので、簡単に取得してgetBeanを使用できますか? 静的アプリケーション コンテキスト? スレッドローカルのどこかに保存されていますか?
java - aspectj: ライブラリのアスペクトをユーザー コードに織り込む方法は?
いくつかのクラスといくつかの側面を含むライブラリがあります。そのような定義を含むファイルです(Eclipseで作成され、「 aspectjAspectedLib.jar
サポート付きのエクスポートjarファイル」を使用)。ファイルをインポートし、そのAspectedLib.jar
ファイルで定義されたクラスの一部を使用しても機能しますが、どのジョインポイントもトリガーされません。つまり、アスペクトは実行されません。
どうすればこれを機能させることができますか?理想的には、Eclipse * でこれをどのように設定できますか?
* バージョン: Juno サービス リリース 2。ビルド ID: 20130225-0426
dojo - Dojo の側面が定義されていません。理由がわかりません
dojo 1.7 から 1.8.3 に更新したいので、dojo.connect コマンドを置き換える必要があります。
スイッチ:
今私が持っています:
Firebug は次のように述べています:「アスペクトが定義されていません」
PS: 新しい AMD ローダーを使用していないことはわかっています。これは古いプロジェクトであり、私はすべての道場のことも初めてです。dojo.require("x");dojo.require("y");
からへの単純な変換require(["x","y"], function (x,y){...}
は私にはうまくいかないので、古いスタイルが必要です。
scala - ロギングを Scala コードに追加するインストルメンテーション
Java では、ロギングを Java クラスに透過的に追加するために使用できますAspectJ
(または、おそらく他のバイト コード計測ツールを使用します)。今、Scala関数に透過的にロギングを追加する方法を考えています。
関数を変換するツールが欲しいfoo
そのようなものに:
Scala 関数にログを透過的に追加するにはどうすればよいでしょうか?