1. ホーム
  2. java

[解決済み] Spring AOPとAspectJの比較

2022-04-20 06:15:07

質問

Spring AOPは、フレームワークとしてカスタムJava5アノテーションを使用するため、セキュリティ、ロギング、トランザクションなど、アプリケーション固有のタスクに使用するのが最適という印象を持っています。しかし、AspectJはデザインパターンの面でよりフレンドリーであるように思えます。

SpringアプリケーションでSpring AOPとAspectJを使用する際の様々な長所と短所を強調できる方はいらっしゃいますか?

どのように解決するのですか?

Spring-AOPのプロフェッショナル

  • LTWを使う必要がないので、AspectJよりシンプルに使える( ロードタイムウィービング やAspectJのコンパイラを使用します。

  • ProxyパターンとDecoratorを使用します。 パターン

Spring-AOPの短所

  • プロキシベースのAOPなので、基本的にメソッド実行のジョインポイントしか使えません。
  • 同じクラス内の別のメソッドを呼び出す際には、アスペクトは適用されません。
  • 実行時に若干のオーバーヘッドが発生することがあります。
  • Spring-AOPでは、Springファクトリーで作成されていないものにはアスペクトを追加できない

AspectJの長所

  • すべての結合点をサポートしています。つまり、何でもできるのです。
  • Spring AOPに比べ、実行時のオーバーヘッドが少ない。

AspectJの短所

  • 注意すること アスペクトが織り込まれたかったものだけに織り込まれているかどうか確認してください。
  • AspectJコンパイラでビルドする必要がある、またはLTW(load-time weaving)を設定する必要がある。