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