[seasar-javadoc:178] Re: InstanceDef

Koichi Kobayashi koichik @ improvement.jp
2006年 6月 4日 (日) 18:00:34 JST


小林 (koichik) です.

Date:    Sun, 4 Jun 2006 13:57:08 +0900
From:    "O.Goto" <o-goto @ try-net.or.jp>
To:      seasar-javadoc @ ml.seasar.org
Subject: [seasar-javadoc:177] Re: InstanceDef

> > インジェクションできる/できないというのは,そのインスタンスが
> > 生成される時点で存在するコンテキストからはインジェクションできて,
> > 存在しないコンテキストからはインジェクションできないということです.
> > 
> これは全てのインスタンスモードについて言えるわけですよね。

はい,その通りです.

> ということは、「〜は〜をインジェクション出来ます。」というように単純には表やリストには出来ないですよね。
> どうしたら一番いいのかな?

分かりやすさと正確さのバランスが難しいですね.
正確さを重視すると session に request を設定するみたいなのは
問題なく可能ということになりますが,分かりやすさを重視するなら
それはできません,あるいはやめた方がいい,と言ってしまう方が
簡単だったり.

Javadoc というドキュメントの位置づけを考えると,正確さを
重視した方がいいかもしれませんね.
分かりやすさは Javadoc ではなく他のドキュメントに
任せるということで.

>  * コンポーネントインスタンス定義の種類には、以下のものがあります。
>  * <dt><code>singleton</code>(default)</dt>
>  * <dd>S2コンテナ上で唯一のインスタンスになります。</dd>
>  * <dt><code>prototype</code></dt>
>  * <dd>コンポーネントが必要とされる度に異なるインスタンスになります。</dd>
>  * <dt><code>application</code></dt>
>  * <dd>アプリケーションコンテナのアプリケーションコンテキスト毎に1つのインスタンスになります。</dd>
>  * <dt><code>request</code></dt>
>  * <dd>アプリケーションコンテナのリクエストコンテキスト毎に1つのインスタンスになります。</dd>
>  * <dt><code>session</code></dt>
>  * <dd>アプリケーションコンテナのセッションコンテキスト毎に1つのインスタンスになります。</dd>

今更気づきましたが,「アプリケーションコンテナ」はちょっと
分かりにくいかも.Web コンテナのような位置づけの総称という
意図なのだと思いますが,見る人によっては「何それ?」と
思うかもしれません.
ここは「アプリケーションコンテの」はサクッと削っていいように
思います.

>  * それぞれ、インスタンスが生成されるタイミングはそのコンポーネントが必要とされる時になります。

捕捉として,singleton は S2Container#init() が呼び出された時点で
インスタンスが生成されるということを書いておいた方がいいかもしれません.
もっとも,これは S2ContainerImpl の実装では,ということになりますし,
InstanceDef で記述する範囲を超えているような気もしますが.
うーん,うーん,やっぱりなくてもいいかも.
それは S2ContainerImpl#init() のところで書いてあればいいや.

>  * コンポーネントにインジェクションできるコンポーネントは、インジェクション対象コンポーネントのインスタンスが生成される時点で存在するコンテキストのコンポーネントからのみです。

「コンポーネント」が 4 回も出てくるとさすがに辛いですね.(^^;

 * コンポーネントにインジェクションできるのは、そのコンポーネントが生成される時点で存在するコンテキストのコンポーネントのみです。

でどうでしょう?


-- 
<signature>
    <name>Koichi Kobayashi</name>
    <e-mail>koichik @ improvement.jp</e-mail>
</signature>



seasar-javadoc メーリングリストの案内