2011-01-16 14 views
8

AOPのパターンを見直した後、私は春のプロジェクトでどのように使用するのか、どのように使うのかに圧倒されます。春のプロジェクトでAOPの最も一般的な用途は何ですか

私はすべての金融ビジネスロジックの監査ログシステムとして使用したいと思います。統合するのは簡単なようです。しかし、私はあなたのこれを取る聞いてみたいです。

質問は、このパターンに共通する他の用途は何ですか?利点がある限り、現在のロジックをAOPで使用するためにリファクタリングしても構いません。

+2

少し似た質問があります:「アスペクトJは何のために良いのですか?」 http://stackoverflow.com/questions/4313789/what-is-aspectj-good-for – Ralph

答えて

9

おそらく最も一般的な使用は、@Transactionalを使用する宣言型トランザクション処理です。

7

Axelが述べたように、ロギング/監査と宣言的なトランザクション処理以外にも、AOPの別の使い方は要求インターセプタであると言えます。たとえば、サーバーからのすべての要求を傍受して、何かを行うことができるようにする必要があるとしましょう(どのアプリケーションが他のアプリケーションやデータベースにどのような要求を送信しているかを把握するなど)。

+0

これはHandlerInterceptorとHandlerInterceptorAdoptorを使っても可能です – Prateek

1

AOPを監査ロギングに使用することは、AOPを完全に有効に使用することです。テストのためにオフにして、実稼働環境の要件が変わると変更することができます。

この場合の唯一の欠点は、SQL経由で監査ログを作成する予定がある場合だけです。この種の監査をトリガーとしてDBに直接実装する方がより効果的です。

1

@Axelとはちょっと違う答えとして、それを使って自動的にすべてのデータアクセス呼び出しを傍受し、トランザクションを適切に適用します。私は私のDAOパッケージへのすべての呼び出しを実装するように設定しています。トランザクションでは "get"で始まらず、 "get"で始まるメソッドで実行されるものはすべて読み取り専用として扱われます。最初の設定とは別に、名前付け規則に従うだけで心配する必要はありません。

2

セキュリティ上の問題(たとえば、メソッドへのアクセスの許可/禁止など)では、AOPを使用できます。 aopの別の使用法は、アプリケーションのパフォーマンスをテストすることです。

+1

allow/dissalowメソッドへのアクセスを実行するにはSpring SecurityがAOPよりも良い選択だと思います。 –

7

最も一般的な使用法は、アプリケーションにクロスカッティングの問題、つまり複数のクラス/レイヤーで記述されるロジックまたはコードを使用することです。

これはお客様のニーズに応じて異なる場合があります。これらのいくつかの非常に一般的な例は次のようになります。

  1. トランザクション管理
  2. ログ
  3. 例外処理(あなたが詳細なトレースを持っているか、例外からの回復のいくつかの計画を持っている場合があります場合は特に)
  4. セキュリティ面
  5. 計測器

希望するものがあります。

関連する問題