AOP (アスペクト指向プログラミング Aspect Oriented Programming)
プログラミングをしていると、ログ出力や例外ハンドリングなどといった 複数の箇所にまたがって存在する処理 が出てきますが、これらの処理のことを 横断的関心事 (Cross-Cutting Concern) と呼んでいます。
また、プログラムからこの 横断的関心事 を分離することを 横断的関心事の分離 (Separation Of Cross-Cutting Concerns) と呼び、これを実現する手法は アスペクト指向プログラミング AOP と呼ばれています。
AOP を利用すれば、Java のソースコードから共通的な機能を分離することができます。
Spring Framework では AOP を実現するためのサブプロジェクトとして Spring AOP が用意されています。
Spring AOP では、広く使われている AOP フレームワークである AspectJ を利用しています