« PostgreSQLのロール設定 | Main | S2DxoとJAXB2.0 »

2007.07.14

Seasar SMART deploy環境でのDaoへのIntercept

 Seasar2.4では、ルールに則ったパッケージ構成を行うことで、SMART deployを行うことが出来ます。SMART deployを適用すると、diconファイルの記述量が激減する(場合によっては、diconファイルの追加/修正が不要となる)わけですが、逆に言うと、標準のルールの範囲外のことをやろうと行おうとした場合は、それなりに設定の変更等が必要になってくるわけで。

 SMART deployの設定方法においていろいろとまとめられています(というか、いろいろと試行錯誤した後でこのページの存在に気づいてしまったのですが(苦笑))。

 で、今回行った内容は、Daoに対してInterceptorを適用するという設定。例えばinsert*メソッドが呼び出された場合、entityの内容をチェックしてNGの場合は値を自動的に適切なものに書き換えたりエラーにしたりするという処理を追加するとします。

 その場合、customizer.diconファイルを以下のような感じで設定(書き換え)すればOKのようです(app_aop.daoInterceptorでDaoに対するInterceptorを定義しています・・・1つのファイルにまとめることが出来ればそうした方がいいのかもしれませんが、設定方法がわからなかったので)。

<component name="daoCustomizer"
 class="org.seasar.framework.container.customizer.CustomizerChain">
 <initMethod name="addCustomizer">
  <arg>
   <component
    class="org.seasar.framework.container.customizer.AspectCustomizer">
    <initMethod name="addInterceptorName">
     <arg>"app_aop.daoInterceptor"</arg>
    </initMethod>
    <property name="pointcut">"insert.*"</property>
   </component>
  </arg>
 </initMethod>
 <initMethod name="addCustomizer">
  <arg>traceCustomizer</arg>
 </initMethod>
 <initMethod name="addCustomizer">
  <arg>s2DaoCustomizer</arg>
 </initMethod>
</component>

 注意点は、s2DaoCustomizerより前に適用しなければいけないことですかね。

#ちなみに、テストしたのはSeasar2.4.15の環境です。

|

« PostgreSQLのロール設定 | Main | S2DxoとJAXB2.0 »

Java」カテゴリの記事

Comments

インターセプタも SMART deploy で自動登録することができますよ.独自のインターセプタのパッケージを .interceptor にして,クラス名が FooInterceptor なら customizer.dicon の定義を

<initMethod name="addInterceptorName">
<arg>"fooInterceptor"</arg>
</initMethod>

のようにすれば app_aop.dicon にインターセプタを定義する必要はありません.クラス名の先頭を小文字にしたのがコンポーネント名になります.
もしクラス名が DaoInterceptor だと S2Dao 標準のインターセプタと区別が付かなくなるので,ValidateDaoInterceptor とかにする必要があります.

Posted by: koichik | 2007.07.16 00:12

ありがとうございます。

早速コンポーネント名が重ならないようにクラス名を変えて試してみたところ、明示的な登録なしで期待通りの動きをしてくれました。

もっと勉強せねば・・・。

Posted by: syo | 2007.07.16 07:39

Post a comment



(Not displayed with comment.)


Comments are moderated, and will not appear on this weblog until the author has approved them.



TrackBack


Listed below are links to weblogs that reference Seasar SMART deploy環境でのDaoへのIntercept:

« PostgreSQLのロール設定 | Main | S2DxoとJAXB2.0 »