[Seasar-user:20811] Re: 毎回SingletonS2Container.getComponentで取得したオブジェクトは同じものですか?

Koichi Kobayashi [E-MAIL ADDRESS DELETED]
2011年 6月 20日 (月) 19:00:57 JST


小林 (koichik) です.

> ここで聞きたいのはSingletonS2Container.getComponent方法で取得したオブジェクトは毎回同じですか?

dicon ファイルの設定によります。

http://s2container.seasar.org/2.4/ja/DIContainer.html#InstanceMode

デフォルトは singleton で、毎回同じインスタンスになります。

> どうしたら毎回異なるオブジェクトを取得できますか?

<component class="...WCB02I10Service" instance="prototype">
  ...
</component>

のように instance 属性を指定すると、毎回異なったインスタンスになります。

AutoRegister を使っている場合は instanceDef 属性で指定します。

http://s2container.seasar.org/2.4/ja/DIContainer.html#ComponentAutoRegister

WCB02I10Service クラスに @Component アノテーションを付けて、
その instance 要素で指定することもできます。

http://s2container.seasar.org/2.4/ja/DIContainer.html#ComponentAnnotation


Date: Mon, 20 Jun 2011 16:55:02 +0800 
From: [E-MAIL ADDRESS DELETED]
Subject: [Seasar-user:20810] 毎回SingletonS2Container.getComponentで取得したオブジェクトは同じものですか?

> Seasar-user リスト管理人へ
> 
> いつもお世話になっております。
> iafandaです。
> 
> S2Axis2Examples 0.5.0をもとにWEBサービスプロジェクトが開発してます。
> DBアクセスはdbfluteを使っています。
> 
> サンプルとしてEchoImpl.javaファイルを修正して以下になります。
>     public String echo(int id, String message) {
>         // コンテナからインスタンス取得
>         WSBase batch;
>         try {
>             batch = (WSBase) SingletonS2Container.getComponent(WCB02I10Service.class);
>             Object o = batch.run();
> 
>         } catch (Exception e) {
>             e.printStackTrace();
>         }
>         return "[id = " + id + "] " + message;
>     }
> 
> ここで聞きたいのはSingletonS2Container.getComponent方法で取得したオブジェクトは毎回同じですか?
> 同じ場合は複数の人がWEBサービスを呼び出す場合、取得したオブジェクトは前の人が変更したオブジェクトに可能性がありますか?どうしたら毎回異なるオブジェクトを取得できますか?
> 
> 同じではない場合どのクラスのどのメッソドで処理してますか?
> 
> 宜しくお願いします。
> 
> 
> 
> 
> 

--
{
  name: "Koichi Kobayashi",
  mail: "[E-MAIL ADDRESS DELETED]",
  blog: "http://d.hatena.ne.jp/koichik/",
  twitter: "@koichik"
 }



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