[Seasar-user:10396] Re: Interceptor クラス内で Session= ?ISO-2022-JP?B?GyRCJTklMyE8JVckTiUzJXMlXSE8JU0lcyVIJHJFUE8/JDkkayRLGyh C?= は
Koichi Kobayashi
[E-MAIL ADDRESS DELETED]
2007年 9月 8日 (土) 02:00:17 JST
小林 (koichik) です.
Date: Fri, 7 Sep 2007 17:34:27 +0900 (JST)
From: [E-MAIL ADDRESS DELETED]
To: [E-MAIL ADDRESS DELETED]
Subject: [Seasar-user:10392] Interceptor クラス内で Session= ?ISO-2022-JP?B?GyRCJTklMyE8JVckTiUzJXMlXSE8JU0lcyVIJHJFUE8/JDkkayRLGyh C?= は
> [Seasar-user:5887]を参考にTeedaでログイン機能を実装しようとしています。認証
> 処理やログインユーザー情報取得などの実装はすべてAOPで行うようInterceptorクラ
> スの設計をしているのですが、その中で@Component(instance=InstanceType.SESSION
> ) したクラスをコンポーネント登録する方法がわかりません。S2Container#register
> ()でコンポーネント登録するとinstanceがsingletonになってしまいます。Intercept
> orクラスにてどのように記述すればInstanceType.SESSIONのコンポーネントとして登
> 録出来きPageクラスでコンポーネント取得が出来るでしょうか?
セッションスコープのコンポーネントを DTO にすれば
SMART deploy で自動登録されます.
package <root>.dto;
@Component(instance=InstanceType.SESSION)
public class LoginInfoDto {
..
}
としておいて,インターセプタは単に
package <root>.interceptor;
public class LoginInterceptor {
public LoginInfoDto loginInfoDto;
...
}
あとは customizer.dicon で,
<component name="pageCustomizer"
class="org.seasar.framework.container.customizer.CustomizerChain">
<initMethod name="addAspectCustomizer">
<arg>"loginInterceptor"</arg>
<arg>"do.*, initialize, prerender"</arg>
<arg>true</arg>
</initMethod>
</component>
とするだけです.
Dto もインターセプタも明示的に登録する必要は
ありません.
--
<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 メーリングリストの案内