第16章 AOP定義

-アスペクト指向プログラミング-

目次

16.1. はじめに
16.2. <aspect>要素
16.2.1. pointcut属性
16.3. <interType>要素
16.4. まとめ

16.1. はじめに

16.2. <aspect>要素

アスペクト

<component class="fullQualifiedClassName">
  <aspect
    pointcut="pointcut"                                                                  (1)
  >
    content
  </aspect>
</component>
(1)

pointcut (任意): インターセプタを適用するメソッドを選択するためのポイントカットを指定します.

<aspect>要素の内容には次のものを記述することができます.

  • OGNL式または<component>要素

  • <description>要素

<aspect>要素の内容にOGNL式と<component>要素の両方を記述した場合,<component>要素は無視されます.

<component>要素には複数の<aspect>要素を記述することができます. その場合,複数の<aspect>要素のpointcut属性で選択されたメソッドには, 複数のインターセプタが<aspect>要素の記述された順番で適用されます.

16.2.1. pointcut属性

-ポイントカット-

インターセプタを適用するメソッドを正規表現で指定します. 正規表現はカンマ区切りで複数並べることができます.

次の例では,doで始まるメソッドとinitで始まるpublicメソッドが選択されます.

<component name="hoge">
  <aspect pointcut="do.*,init.*">traceInterceptor</aspect>
</component>

オーバーライドされたメソッドの一部だけを選択することはdiconではできません. 同名のメソッドは全部選択されます (ただしpublicメソッドのみ). アノテーションでは特定のメソッドだけを選択することができます.「」

16.3. <interType>要素

-インタータイプ-

(Version: 2.4.0~)

<component class="fullQualifiedClassName">
  <intertype>
    content
  </interType>
</component>

<interType>要素の内容には次のものを記述することができます.

  • OGNL式または<component>要素

  • <description>要素

<interType>要素の内容にOGNL式と<component>要素の両方を記述した場合,<component>要素は無視されます.

<component>要素には複数の<interType>要素を記述することができます. その場合, 複数のインタータイプが<interType>要素の記述された順番で適用されます.

16.4. まとめ