問題タブ [aspectj]
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 - AspectJ にはどの Maven プラグインを使用しますか?
java 6.0 を使用して、aspectj を Maven プロジェクトに追加しようとしています。ブラウジングすると、2 つの Maven プラグインが見つかりましたが、どれも期待どおりに動作しません。
最初のものhttp://mojo.codehaus.org/aspectj-maven-pluginは、5.0以降のソースをコンパイルするコードを取得できなかったため、最初はnetbeansを介して機能しませんでした(注釈などについて不平を言いました)コマンドから試した後機能した行と実行されたコマンドを比較すると、コンパイルの目標は正常に機能しますが、プラグインおよびJava 5+コードと互換性のないmavensのインストールの目標のようです。これを回避することは可能かもしれませんが、それは煩わしいので、次の質問に行き着きます。aspectj-maven-plugin はまだ開発中ですか? 私はまだそれを使用する必要がありますか?
2 つ目は apaches のもので、よりアクティブで動作する可能性が高いようです。ただし、完全な例が見つからず、実行できません。Mavenから例外が発生し続けます:
jarファイルはそのままで、使用するプラグインのバージョンに関係なく、常に同じ例外がスローされます。問題が何であるかについてのアイデアはありますか?
要するに、どのプラグインをどのように使用すればよいですか?
ありがとう
java - スーパークラスのメソッドをオーバーライドするための AOP または APT
@ReferencedResource
カスタム注釈または別の注釈で注釈が付けられた wicket コンポーネントの大規模なライブラリがあり、複数の注釈を許可するパラメーター@ReferencedResources
があります。ReferencedResouce[] value()
サンプル コード スニペットを次に示します。
ここまでは、aptを使用して参照先のリソースが実際に存在することを確認しました。例えば
js/behaviors/promoteSelectOptions.js
ファイルがクラスパスで見つからない限り、コンパイルは失敗します。この部分はうまく機能します。
現在、私は DRY のファンでもあり、同じアノテーションを使用して、オブジェクトが作成されたときに実際にリソースをオブジェクトに注入したいと考えています。AspectJ を使用して、この一部を実装しました。
注釈付きオブジェクトは、常にComponentまたはAbstractBehaviorのいずれかのインスタンスです。
コンポーネントの場合は簡単で、コンストラクターの後に一致させるだけです。これを行うアドバイスは次のとおりです。
ただし、動作の場合は、動作自体ではなく、応答にリソースを添付する必要があります。私が使用するポイントカットは次のとおりです。
そして、ここにアドバイスがあります:
これは、クラスがrenderHead(response)メソッドをオーバーライドする場合にもうまく機能しますが、多くの場合、スーパー クラスは基本機能を既に実装しているのに対し、子クラスはいくつかの構成を追加するだけであるため、必要ありません。したがって、1 つの解決策は、これらのクラスに次のようなメソッドを定義させることです。
これはデッド コードであるため、私はこれを嫌いますが、現在これが唯一の有効なオプションであるため、他の解決策を探しています。
編集:
APT と sun javac 呼び出しを使用して、実用的なソリューションを作成しました。ただし、これは次の問題につながります。maven を使用して同じプロジェクトで APT と AspectJ を実行することです。
とにかく、時間ができ次第、この質問 (またはその一部) への回答を投稿します。
java - AspectJ、コンストラクターなしの一般的なポイントカット
私はプロファイリング方法を作成しました:
そして、tld.mycompany.business.aspects.SystemArchitectureのポイントカットを次のように定義しました
と
コンストラクターと例外ではないサービスレイヤー内のすべてのメソッドをプロファイリングしたい(「初期化がサポートされていない(コンパイラーの制限)」と「初期化前がサポートされていない(コンパイラーの制限)」を取得しないようにする「警告)そして私がいくつか持っているdataType()を無視してください。
ただし、コンストラクターと例外に関する警告が表示されます。また、Javaメソッドについてアドバイスしているようです。そのため、すべての行で多くのアドバイスをヒットするため、アプリケーションのデバッグはほぼ不可能になりました。Eclipseは、profileBusinessラインだけで2747のアドバイスがあると言っています。
明らかに私は何かを誤解したに違いありませんが、何ですか?Implで終わるtld.mycompany.business階層内のクラスのすべてのメソッド(コンストラクターを除く)の周りにあるようにするにはどうすればよいですか?
乾杯
ニック
java - Maven を使用した、同じプロジェクト内の APT と AOP
同じ Maven プロジェクトで Annotation Processing (apt) と AspectJ を使用する必要があります。
どちらもそれ自体で機能しますが、apt によって作成されたコードに基づいてアスペクトを作成する必要があります。したがって、バイナリ ウィービングが必要になります (元のソース ファイルは apt によって拡張されます)。Maven プロジェクト内でバイナリ ウィービングを有効にするにはどうすればよいですか?
weaveDependenciesパラメーターを使用して依存関係を提供することが唯一の標準的なオプションであることは知っていますが、これはひどいものです。他に方法はありますか?
OK、Maven Antrun Pluginを使用してAspectJ ant タスクを埋め込むことができましたが、それに頼るのは嫌です。
java - AspectJ: 他のプロジェクトにあるクラスにアドバイスするためのポイントカットを取得する方法
これは単純なはずです。
質問
あるプロジェクトでポイントカットを取得して、別のプロジェクト内のコード/クラスにアドバイスするにはどうすればよいですか?
コンテキスト
私は 2 つのプロジェクトで日食に取り組んでいます。説明を簡単にするために、1 つの科学プロジェクトともう 1 つの数学プロジェクトを呼び出し、科学プロジェクトは数学プロジェクトに依存しており、両方のプロジェクトで同時に開発を行っているとします。数学プロジェクトは本番環境のコア製品であり、コードをあまり変更しなければ生活は楽になります。
現在、これら 2 つのプロジェクト間の相互作用をデバッグしています。これを支援するために、数学コード (および科学コード) の実行時に重要な情報をログに記録する Aspect (科学プロジェクト内) を作成しています。
例
次の行に沿って単純なサンプル アスペクトを実行します。
問題問題は、私が作成したポイントカットに関係なく、科学プロジェクト
のコードしかアドバイスしないことです。からのクラスはクロスカットではありません。add projectに移動してクリックし、数学プロジェクトを選択して、数学プロジェクトを科学プロジェクトのinpathに追加してみました。それはうまくいきませんでしたが、それらの線に沿って何かをする必要があるようです.
org.math.example
proect properties > AspectJ Build > Inpath
事前に、ご提案いただきありがとうございます...
-g男性
編集1:
これを書いて以来、プロジェクトが次のエラーを出していることに気付きました:
したがって、これは適切に設定されている可能性があり、エラーはより微妙です。ところで、言及されたクラスは、いわば「科学プロジェクト」からのものです。これは、プロジェクトをクリーンアップした後でも発生します。私は現在、このエラーをグーグルで調べています...
編集 2:コメント #5 で
上記のエラーの解決策を見つけました 。
問題は、maven-aspectj-plugin の pom ファイルが、aspectjtools バージョン 1.6.7 への依存関係を宣言していることです。そのため、プラグインを構成するときに、その一時的な依存関係を変更する必要があります。1.6.7 ではなくバージョン 1.6.9 を指定して問題を修正する pom ファイルの関連コード スニペットを次に示します。
java - aspectj ファイルのない roo プロジェクトを jar にパッケージ化する方法
こんにちは、Spring Roo を使用して、データベースにアクセスするサービスを作成しています。
そのため、 Eclipseを使用して jar にエクスポートしようとすると、jar には 1 つの Java クラスが含まれていませんが、次のファイルが含ま
れ
て
い
ます
。 1 つのファイルにコンパイルされます。
spring - aop.xmlの名前と場所?
LTWでaop.xmlファイルの名前を指定する方法はありますか?または別の名前と場所を定義しますか?私が使用しているソフトウェアモジュールがいくつかあり、それらはすべて異なる設定でMETA-INF/aop.xmlを使用しています。私はこれらのモジュールをWebアプリケーションに含めますが、それはすべて、展開/解凍の方法、どのaop.xmlファイルが使用されるかに依存します。したがって、長い間検索した結果、すべてのLTWウィービングがaopに依存するため、修正を行うわけではないことがわかりました。 xmlが使用されました...
基本的に、両方のaop.xmlファイルを使用する必要があります。これは、aop.xmlファイルの両方のコンテンツをマージするようなものです...
これを行う方法?エド
java - Aspectj。複数のクラスでのinter型メソッドの作成
私が置く場合:
CountryStateクラスでfindメソッドを作成しています。
複数のクラスでメソッドを作成する方法はありますか?作成するクラスごとにコードを繰り返す必要がありますか?
アスペクトを使用すると、クラスを別のクラスから継承できることを知っていますが、Javaは多重継承を受け入れないため、これを行うと1つのスーパークラスを作成できます。
java - コンパイル時のウィービング構成
ロード時の織り方をコンパイル時の織り方に変換しようとしています。
そこで<context:load-time-weaver/>
、spring configから削除し、aspectjコンパイラーをに追加しましたpom.xml
。しかし、の情報を変換する方法がわかりませんMETA-INF/aop.xml
。
私はそこにこのようなものを持っています:
java - テスト実行専用の Maven で AspectJ アスペクトを使用して本番クラスを織り込む
Maven ビルドのプロジェクトがあり、基本的なパフォーマンス トレースをメソッドに追加する必要があります。これには AspectJ を使用することにしました。主な要件は、トレースの側面を本番クラスに織り込むことですが、単体テストの実行フェーズのみです。
Maven でウィービングを構成できましたが、テストの実行後、アスペクトが適用された同じプロダクション クラスがパッケージ化された戦争に移行します。
このケースはかなり一般的なように見えますが、Web で解決策を見つけることができませんでした。