Spring によるアスペクト指向プログラミング

アスペクト指向プログラミング(AOP)は、プログラム構造に関する別の考え方を提供することにより、オブジェクト指向プログラミング(OOP)を補完します。OOP のモジュール性の重要な単位はクラスですが、AOP のモジュール性の単位はアスペクトです。アスペクトにより、複数の型とオブジェクトにまたがる関心事(トランザクション管理など)のモジュール化が可能になります。(このような関心事は、AOP の文献では「横断的」関心事と呼ばれることがよくあります。)

Spring の重要なコンポーネントの 1 つは、AOP フレームワークです。Spring IoC コンテナーは AOP に依存しませんが(必要ない場合は AOP を使用する必要はありません)、AOP は Spring IoC を補完して、非常に有能なミドルウェアソリューションを提供します。

AspectJ ポイントカットを使用した Spring AOP

Spring は、スキーマベースのアプローチまたは @AspectJ アノテーションスタイルを使用して、カスタムアスペクトを作成するためのシンプルかつ強力な方法を提供します。これらのスタイルは両方とも、ウィービングに Spring AOP を使用しながら、完全に型指定されたアドバイスと AspectJ ポイントカット言語の使用を提供します。

この章では、スキーマベースおよび @AspectJ ベースの AOP サポートについて説明します。下位レベルの AOP サポートについては、次の章で説明します。

AOP は Spring Framework で次の目的で使用されます。

  • 宣言的なエンタープライズサービスを提供します。このようなサービスで最も重要なのは、宣言型トランザクション管理です。

  • ユーザーにカスタムアスペクトを実装させ、OOP と AOP の使用を補完します。

汎用の宣言型サービスまたはプーリングなどの事前にパッケージ化された宣言型ミドルウェアサービスのみに関心がある場合は、Spring AOP を直接操作する必要はなく、この章のほとんどをスキップできます。