2011-12-05 11 views
2

私はロギングやエラー処理のためにアプリケーションでAOPを使用しようとしています。 ほとんどの人がaspectjを使用することをお勧めしました。だから私の質問はなぜaspectjは私にそれを使用できるようにEclipseプラグインをインストールする必要があるのですか? アスペクトは単にリフレクションを使用して実行時にクラスを変更しませんか?Java - aspectjでプラグインをインストールする必要があるのはなぜですか?

ビルドサーバも使用していますが、aspectjを使用してプロジェクトを実行するには、ビルドサーバにも何かをインストールする必要がありますか?

答えて

4

Eclipseにアスペクトを認識させ、AspectJの機能を内部ビルド・プロセスに組み込むことを特に望む場合を除き、そうはしません。 (AOP用のIMO IDEのサポートは素晴らしいですし、AOPの扱いがずっと簡単です。ガターマーキングだけで入場料を払う価値があります)

AspectJはバイトコードを変更します。

ビルドサーバーには適切なライブラリが必要です。コンパイル時には、ビルドスクリプトに追加する必要があります。

2

Aspect-Jは、エージェントを使用して、いわゆるロードタイムウィービングによってクラスを修正します。これは、java-proxyがインタフェースでしか動作できないため必須です。エージェントは、追加の(バイト)コードでクラスを補強します。

EDIT:プラグインは通常、定義やレビューポイントカットをしてポイントに参加する追加機能を提供します。

+1

なぜEclipseプラグインが必要なのかという質問には答えません。 –

+0

@MatthewFarwellありがとう、追加 – stacker

1

いいえ、あなたはAOPを使用して書かれたコードをコンパイル/実行するためにプラグインを必要としません。

アプリケーションのコンパイル/実行中にクラスパス情報を追加する必要があります。

例えば、hereを見ることができます。 Antを使用してaspectj jarsを追加して、この例を実行します。 AspectJコードを確実に実行するためのプラグインは必要ありません。プラグイン&日食について

これは、AspectJのコードを理解し、無効としてJavaコードを混同しないように日食アイデアを与えることについてです。

0

Mavenプロジェクトをお持ちの場合は、Aspectを使用するためにいくつかの依存関係を設定するだけです。 NetbeansでAspectJを使用していますが、完全に動作します。インストールするプラグインはありません。

一部の情報はhttp://mojo.codehaus.org/aspectj-maven-plugin/を参照してください。