[Seasar-user:19298] Re: セッションのDIについて

Yasuo Higa [E-MAIL ADDRESS DELETED]
2010年 2月 12日 (金) 17:04:15 JST


ひがです。

> 多くの人が不具合と思いそうなことを不具合と認められないなら、進歩はないと思い
> ました。
> 「不具合」の解釈が人によって違うせいかもしれませんが、一般的には「具合の悪い
> ものすべて」を不具合と呼ぶと思います。
> 
> 詳しい現象を記述していなかったので、記述させていただきます。
> もしかしたら、認識違いがあるかもしれないからです。
> 
こう対応したら大丈夫ですよといっているにもかかわらず、
その対応をせず、不具合だというのは、問題だと思いますよ。
下記の現象なら小林さんの言うとおり、
http://www.seasar.org/wiki/index.php?FAQ%2FS2AOP#z685b23f
のように設定したら大丈夫なはずです。

ちゃんと設定したら起きない問題ならそれを不具合とはいわないはずです。

逆にそれをフレームワークの不具合というなら、
どんなフレームワークも不具合だらけだと思いますよ。

> 
> public class LoginInterceptor extends AbstractInterceptor {
> 
> 	private static final long serialVersionUID = -803577202478748124L;
> 
> 	private OperatorDto operatorDto;
> 
> 	@Override
> 	public Object invoke(MethodInvocation arg0) throws Throwable {
> 
> 		this.operatorDto = (OperatorDto) SingletonS2ContainerFactory
> 
> .getContainer().getComponent(OperatorDto.class);
> 		String operatorName = this.operatorDto.getName();
> 		if (operatorName == null || operatorName.length() == 0)
> 			return LoginPage.class;
> 		else
> 			return arg0.proceed();
> 	}
> 
> 	public OperatorDto getOperatorDto() {
> 		return operatorDto;
> 	}
> 
> 	public void setOperatorDto(OperatorDto operatorDto) {
> 		this.operatorDto = operatorDto;
> 	}
> }
> 
小林さんが紹介している方法とは別に、
コンテナから直接とる解決策もあります。

コンテナから直接とる方法は、見た目がわかりやすいので
私がお勧めしている方法ですが、その場合、インスタンス変数ではなく
ローカル変数を使ってください。
インスタンス変数だと複数スレッドでアクセスされると問題が
起きる可能性があります。


Seasar-user メーリングリストの案内