[Seasar-user:21463] Re: 【Teeda + S2hibarnate】Daoへの独自interceptorの設定方法に関して
Koichi Kobayashi
[E-MAIL ADDRESS DELETED]
2012年 9月 16日 (日) 22:18:10 JST
小林 (koichik) です.
customizer.dicon の daoCustomizer の定義では
S2Hibernate のインターセプタよりも前に
insertInterceptor (および traceInterceptor) を
記述する必要があります。
S2Hibernate のインターセプタは後続のインターセプタを
呼び出さないためです。
記載されている daoCustomizer の定義には S2Hibernate の
Dao が記述されていないので前後関係がわかりませんが、
もし上記の順番になっていなければ修正して試してください。
順番が正しい場合はより詳細な情報を記載してください。
Date: Sun, 16 Sep 2012 02:11:08 +0900
From: 秋穂 賢 <akki_1031 @ hotmail.co.jp>
Subject: [Seasar-user:21462] 【Teeda + S2hibarnate】Daoへの独自interceptorの設定方法に関して
>
>
>
>
> お世話になっております。秋穂と申します。
> Teeda + S2hibarnate環境で開発を行っています。Daoでinsertする際に更新日時を自動で設定するinterceptorを実装しようと思っていますがうまくいかず、ご質問させて頂きました。
> 当方では下記の設定をしていますが、Daoでinsertを呼び出す際にinterceptorが動きません。どのようにすればinterceptorが動くかご教授頂けますでしょうか? ※情報に不足がある場合はご指摘下さい。
> ・<root-package>.interceptorパッケージにInsertInterceptorクラスを実装 (AbstractInterceptorを継承)・insertを発行する際はs2hibernateにて実施・同様な設定をcustomizer.diconのlogicCustomizerにしたところ、うまくinterceptorされました
> 以下、ソースコード ※一部投稿用に修正しています。----------------------------------------
>
>
>
>
>
>
>
>
> 【xxDaoのインターフェース】 public interface XxDao { public void insert(Entity entity); }
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
> 【Daoを使用するクラス】 public class xxLogicImpl implements TicketPageEditorLogic { public XxDao xxDao;
> public void testMethod(Entity entity) { xxDao.insert(entity); }
>
>
>
>
>
>
>
>
> 【customizer.dicon】?省略? <component name="daoCustomizer" class="org.seasar.framework.container.customizer.CustomizerChain"> <!-- 独自interceptor定義 --> <initMethod name="addAspectCustomizer"> <arg>"insertInterceptor"</arg> <arg>"insert"</arg> </initMethod>
> <initMethod name="addCustomizer"> <arg>traceCustomizer</arg> </initMethod>
> </component>?省略?
> 【interceptorの実装】?省略?public class InsertInterceptor extends AbstractInterceptor {
> private static final long serialVersionUID = 1L;
> @Override public Object invoke(MethodInvocation invocation) throws Throwable {
> System.out.println("InsertInterceptor!!!!!!!!!!!!!!!!!!!!!!!!!");
> String className = getTargetClass(invocation).getName(); System.out.println(className);
> invocation.proceed(); return null; }}
> 以上です。お手数おかけしますが、ご確認よろしくお願い致します。
>
--
{
name: "Koichi Kobayashi",
mail: "koichik @ improvement.jp",
blog: "http://d.hatena.ne.jp/koichik/",
twitter: "@koichik"
}
Seasar-user メーリングリストの案内