[Seasar-user:9680] Re: DaoにAOPをかけた際pointcutしたメソッド以外は動かなくなる

Koichi Kobayashi [E-MAIL ADDRESS DELETED]
2007年 8月 5日 (日) 19:30:22 JST


小林 (koichik) です.

Date:    Sun, 05 Aug 2007 18:38:53 +0900
From:    島村竜一 <[E-MAIL ADDRESS DELETED]>
To:      [E-MAIL ADDRESS DELETED]
Subject: [Seasar-user:9678] DaoにAOPをかけた際pointcutしたメソッド以外は動かなくなる

> 現在 Daoにpointcutを設定したメソッド以外は
> 動かなくなっております。

pointcut で指定されていないメソッドには
インターセプタが適用されず,Dao が
インタフェースの場合はメソッドの実体がないので
どうにも動きようがありません.

やりたいことが今ひとつ分かりませんが,
こんな感じじゃないでしょうか.

    <!-- DAO -->
    <component class="xx.xx.xx.xx.db.dao.AcceptGoodsDao">
        <aspect pointcut="insert">daoInsertAdvice</aspect>
        <aspect pointcut="update">daoUpdateAdvice</aspect>
        <aspect pointcut="updateLogicDeleteModifiedOnly">daoLogicDeleteAdvice</aspect>
        <aspect>dao.interceptor</aspect>
    </component>

このように記述すると,<aspect> 要素で指定された
インターセプタは pointcut にマッチするメソッドに
上から順に適用されます.
すなわち,

・insert()
    daoInsertAdvice と dao.interceptor
・update()
    daoUpdateAdvice と dao.interceptor
・updateLogicDeleteModifiedOnly()
    daoLogicDeleteAdvice と dao.interceptor
・その他のメソッド
    dao.interceptor

が適用されるようになります.


-- 
<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 メーリングリストの案内