[Seasar-user:3423] Re: 自動バインディングについて

Koichi Kobayashi [E-MAIL ADDRESS DELETED]
2006年 3月 24日 (金) 03:30:10 JST


小林 (koichik) です.

Date:    Wed, 22 Mar 2006 17:13:25 +0900
From:    "穐山雄治" <[E-MAIL ADDRESS DELETED]>
To:      [E-MAIL ADDRESS DELETED]
Subject: [Seasar-user:3414] 自動バインディングについて

> Seaser2の自動バインディング機能で、instance属性をsingletonで登録したコンポーネントに対して、instance属性をsessionで登録したコンポーネントを設定するといった事はできないのでしょうか?

できないというより意味がないといったところです.

> instance属性がprototypeのコンポーネントに対してはinstance属性をsessionで登録したコンポーネントを設定するといったことはできています。

コンポーネントのライフサイクルが短いコンポーネントが
より長いコンポーネントを参照することは問題ありません.
ライフサイクルの長さは

singleton > session > request > prototype

となります.

> 例えば、singletonのコンポーネントの初期化時は初期化だけ行い、そのコンポーネントを実際に取得する際に、sessionで登録したコンポーネントを自動バインディングして取得するといった方法などはできないのでしょうか?

通常 HTTP セッションは多数存在するわけですが,その中の
どのセッションに登録されたコンポーネントを取得すべきですか?
singleton のコンポーネントはインスタンスが一つしか存在せず,
複数のスレッド間で共有されるということをじっくり考えてみて
ください.


session のコンポーネントを必要とするコンポーネントは
そもそも singleton ではなく,prototype が適切なのでは
ないでしょうか.
prototype であれば,コンポーネントを実際に取得する際に
インスタンスが生成され,そのスレッドに関連づけられている
セッションに登録されているコンポーネントが DI されます.


-- 
<signature>
    <name>Koichi Kobayashi</name>
    <e-mail>[E-MAIL ADDRESS DELETED]</e-mail>
</signature>




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