[Seasar-user:13093] Re: AOPについて

Koichi Kobayashi [E-MAIL ADDRESS DELETED]
2008年 2月 28日 (木) 17:30:34 JST


小林 (koichik) です.

Date:    Thu, 28 Feb 2008 15:29:11 +0800
From:    <[E-MAIL ADDRESS DELETED]>
To:      seasar-user <[E-MAIL ADDRESS DELETED]>
Subject: [Seasar-user:13092] AOPについて

> プロジェクト内のAction内の全てのDB更新や削除などInterceptしたい場合はどうする?

SMART deploy を使っているなら,customizer.dicon で
設定します.

<component name="actionCustomizer" 
    class="org.seasar.framework.container.customizer.CustomizerChain">
  <initMethod name="addAspectCustomizer">
    <arg>"myThrowableInterceptor"</arg>
    <arg>".*"</arg>
    <arg>true</arg>
  </initMethod>
</component>

addAspectCustomizer() の引数は次のとおり.
第 1 引数:Action に適用するインターセプタ名
第 2 引数:インターセプタを適用するメソッドにマッチする正規表現
第 3 引数:インターセプタが HttpServletRequest 等を使うなら true

もし Teeda を使っているなら第 2 引数は

    <arg>"initialize, prerender, do.*"</arg>

の方がいいでしょう.



SMART deploy を使っていないなら,インターセプタを
適用する対象のコンポーネントに対して設定します.

<component name="...Action" class="...Action">
  <aspect pointcut=".*">myThrowableInterceptor</aspect>
</component>


-- 
<component name="koichik">
    <property name="fullName">"Koichi Kobayashi"</property>
    <property name="email">"[E-MAIL ADDRESS DELETED]"</property>
    <property name="blog">"http://d.hatena.ne.jp/koichik"</property>
</component>



Seasar-user メーリングリストの案内