2008-07-18 AOPの使いどころ 雑記 404 java-ja ないわー - AOPどこで使う?を読んで。現在関わっているプロジェクトでのAOPの使いどころについてまとめてみます。 使っているところ トランザクション ログ(エラーログ/性能ログ/操作ログ) 認証チェック キャッシュ DBアクセスの結果をファイルにキャッシュし、次回API呼び出し時にキャッシュファイルがあればそこから返す、みたいなことをやっている。 同時実行制御 APIの呼び出しを何人かのユーザーに制限するため、インターセプタで同時実行制御をする。(複数サーバーがあるので単純なsynchronizedだとまずいんだよね。) データ変換 クライアント-サーバー間の通信で変換が必要なデータモデルの変換をインターセプタで透過的に行なったり。 リトライ クライアントで認証タイムアウトになったときに、再ログインしてリトライ、という処理をインターセプタで行なっている。 使っているけど、使わない方がよかったと思うところ 引数チェック nullチェックとか汎用的に適用できるモノはいいと思うんだけど、 API個別の引数チェックでインターセプタを使うのははずれだと思う。APIごとに別のインターセプタを適用する必要があるため、diconファイルがカオスに。 といったところかな。アスペクトが使えないと仕事にならないレベルでがっつり使ってます。「コードが追いにくくなる」という弊害はあるけど、まぁ便利ですよねー。