[seasar-javadoc:516] Re: S2Container
Makoto Yonezawa
stratosphire @ gmail.com
2006年 8月 16日 (水) 01:56:03 JST
なんとかがんばって生きてます、米澤です。
落ち着いたと思ったら気のせいだったようです;_;
#findComponents、#findAllComponents、#findLocalComponentsを書きました。
つっこみお願いしますm_ _m
それと、Defsの系の確認に、#findComponentDefsを書きました。
あと、クラスコメントも少し肉?を付けてみました。
よろしくお願いしますm__m
#findComponents
/**
* 指定されたキーに対応する複数のコンポーネントを検索して返します。
* <P>
* 検索の対象は現在のS2コンテナおよび、インクルードしているS2コンテナの階層全体です。
* キーに対応するコンポーネントが最初に見つかったS2コンテナを対象とします。
* このS2コンテナから,キーに対応する全てのコンポーネントを配列で返します。
* 返される配列に含まれるコンポーネントは全て同一のS2コンテナに登録されたものです。
* </P>
*
* @param componentKey
* コンポーネントを取得するためのキー
* @return
* キーが文字列の場合、名前が一致するコンポーネントを返します。
* キーがクラスまたはインターフェースの場合、キーの型に代入可能なコンポーネントを返します。
* キーに対応するコンポーネントが存在しない場合は空の配列を返します。
* @throws CyclicReferenceRuntimeException
* コンストラクター・インジェクションでコンポーネントの参照が循環している場合
* @see #findAllComponents
* @see #findLocalComponents
*/
#findAllComponents
/**
* 指定されたキーに対応する複数のコンポーネントを検索して返します。
* <P>
* 検索の対象は現在のS2コンテナおよび、インクルードしているS2コンテナの階層全体です。
* キーに対応するコンポーネントが最初に見つかったS2コンテナとその子孫コンテナの全てを対象とします。
* 対象になるS2コンテナ全体から、キーに対応する全てのコンポーネントを配列で返します。
* </P>
* @param componentKey
* コンポーネントを取得するためのキー
* @return
* キーが文字列の場合、名前が一致するコンポーネントを返します。
* キーがクラスまたはインターフェースの場合、キーの型に代入可能なコンポーネントを返します。
* キーに対応するコンポーネントが存在しない場合は空の配列を返します。
* @throws CyclicReferenceRuntimeException
* コンストラクター・インジェクションでコンポーネントの参照が循環している場合
* @see #findComponents
* @see #findLocalComponents
*/
#findLocalComponents
/**
* 指定されたキーに対応する複数のコンポーネントを検索して返します。
* <P>
* 検索の対象は現在のS2コンテナのみです。
* 現在のS2コンテナから、キーに対応する全てのコンポーネントを配列で返します。
* </P>
*
* @param componentKey
* コンポーネントを取得するためのキー
* @return
* キーが文字列の場合、名前が一致するコンポーネントを返します。
* キーがクラスまたはインターフェースの場合、キーの型に代入可能なコンポーネントを返します。
* キーに対応するコンポーネントが存在しない場合は空の配列を返します。
* @throws CyclicReferenceRuntimeException
* コンストラクター・インジェクションでコンポーネントの参照が循環している場合
* @see #findComponents
* @see #findAllComponents
*/
#findComponentDefs
/**
* 指定されたキーに対応する複数のコンポーネント定義を検索して返します。
* <P>
* 検索の対象は現在のS2コンテナおよび、インクルードしているS2コンテナの階層全体です。
* キーに対応するコンポーネントが最初に見つかったS2コンテナを対象とします。
* このS2コンテナから,キーに対応する全てのコンポーネント定義を配列で返します。
* 返される配列に含まれるコンポーネント定義は全て同一のS2コンテナに登録されたものです。
* </P>
*
* @param componentKey
* コンポーネント定義を取得するためのキー
* @return
* キーが文字列の場合、名前が一致するコンポーネント定義を返します。
* キーがクラスまたはインターフェースの場合、キーの型に代入可能なコンポーネント定義を返します。
* キーに対応するコンポーネント定義が存在しない場合は空の配列を返します。
* @see #findAllComponentDefs
* @see #findLocalComponentDefs
*/
+++++++++++++++++++++++++++++++++++++++++++++++++++++++
概要
S2コンテナはSeasarの基本的な部分です。
DIを実現する機能を提供します。
依存性の少ないコンポーネントを扱う(管理する)ことができます。
これにより、テスタビリティ、変更容易性、再利用性を向上させることが可能になります。
ライフサイクル
・コンテナ生成
・初期化
・コンポーネント取得
・メソッド実行
コンテナの構造
#------------------#
#(ヘッダ)
#<components>(ルート)
#
#include diconファイルへのパス
#
#<component>(コンポーネント)
#</component>
#
#<component>(コンポーネント)
#</component>
#
#</components>
S2コンテナ全体は複数のインクルードされたコンテナとコンポーネント定義により階層化されています。
一つのコンテナは複数のコンテナをインクルードすることができます。
一つのコンテナは複数のコンテナからインクルードされることができます。
一つのコンポーネント定義は一つのコンテナにしか所有されません。
インジェクション
・コンストラクタ・インジェクション
・セッター・インジェクション
・メソッド・インジェクション
06/08/10 に Koichi Kobayashi<koichik @ improvement.jp> さんは書きました:
> 小林 (koichik) です.
>
> Date: Wed, 9 Aug 2006 01:38:34 +0900
> From: "Makoto Yonezawa" <stratosphire @ gmail.com>
> To: seasar-javadoc @ ml.seasar.org
> Subject: [seasar-javadoc:506] Re: S2Container
>
> > すこし息を吹き返しそうです・・・
>
> 頑張れぇ〜.
>
> > * 指定されたキーに対応する複数のコンポーネントを検索して返します。
>
> ここはいいと思います.
>
> > * <P>
> > * 検索されるコンポーネントについて
>
> 些細なことですが,これだけだと Javadoc (HTML) では見出しにならなくて,
> 空白一つ挟んで次の行が続いてしまいます.
> クラスコメントだったら <h4>〜</h4> とか使うところですが,
> メソッドコメントで見出しというのもやりすぎ感があるので,
> ここは段落を分けるだけで見出しは無しにしましょう.
>
> > * 現在のS2コンテナおよび、インクルードされているS2コンテナの階層から、
> > * キーに対応するコンポーネントが最初に見つかったS2コンテナに登録されている
> > * 全てのコンポーネントを検索します。
> > * </P>
>
> 最後のところがちょっと気になるかなぁ.
> 「全てのコンポーネントを検索します」が,キーに対応する複数の
> コンポーネントだということが分かりにくいかな,と.
> でもでも,
>
> * 現在のS2コンテナおよび、インクルードされているS2コンテナの階層から、
> * キーに対応するコンポーネントが最初に見つかったS2コンテナに登録されている、
> * キーに対応する全てのコンポーネントを検索します。
>
> だと明らかにくどい.
> 難しいですね.うーん...
> 箇条書きっぽくしてみる?
>
> * 検索の対象は現在のS2コンテナおよび、インクルードしているS2コンテナの階層全体です。
> * S2コンテナ階層から、キーに対応するコンポーネントが最初に見つかったコンテナを選択します。
> * 選択したコンテナから,キーに対応する全てのコンポーネントを配列で返します。
>
> みたいな.
>
> > * <P>
> > * コンポーネントの検索順について
> > * 最初にメソッドが呼びだされたS2コンテナ、
> > * 次に、インクルードされているS2コンテナの順番にしたがって検索をします。
> > * </P>
>
> ここも見出しっぽいのは無しで,「コンポーネントの検索順は、〜」って
> 感じで.
>
> > * <P>
> > * 返される配列に含まれるコンポーネントは全て同一のS2コンテナに登録されたものです。
> > * </P>
>
> これは上に移動したいかなぁ.
> 箇条書きの最後に追加するとか.
>
> > * <P>
> > * インクルードされているS2コンテナの階層全体に対して、
> > * キーに対応した全てのコンポーネントを検索する場合には{@link #findAllComponents}を使用してください。
> > * メソッドが呼び出されるS2コンテナに対してのみ、
> > * 登録されているコンポーネントだけを検索する場合には{@link #findLocalComponents}を使用してください
> > * </P>
>
> これは @see で十分かも.
> それぞれのメソッドで説明があるわけなので.
>
> > * <P>
> > * キーが文字列の場合、名前が一致するコンポーネントを返します。
> > * キーがクラスまたはインターフェースの場合、キーの型に代入可能なコンポーネントを返します。
> > * キーに対応するコンポーネントが存在しない場合は空の配列を返します。
> > * </P>
>
> これは @return に書いてもいいかも.
>
> > *
> > * @param componentKey
> > * コンポーネントを取得するためのキー
> > * @return コンポーネントの配列
> > * @throws CyclicReferenceRuntimeException
> > * コンストラクター・インジェクションでコンポーネントの参照が循環している場合
> > */
> >
>
> @return は上の段落を持ってくるということで.
>
> > これからすると、
> > findAllComponents、findLocalComponentsも一文ではなく、もう少し説明が要りますよね?
>
> そうですね.基本的に同じ形にしましょう.
>
> > それと、@linkも必要でしょうか?
>
> @link というか @see を相互に書きましょう.
>
> > また、find〜Defsも〜定義が変わるだけですが、同様な説明が必要ですよね?
>
> ですね.
>
>
> > 最後に、クラスメソッドの件です。
> > 概要
> > S2コンテナはSeasarの基本的な部分
> > diconファイルの設定で動作する
> > 仕組み
> > コンテナ生成
> > 初期化
> > コンポーネント取得
> > メソッド実行
> > インジェクション
> > 3つの種類
> >
> > こんな感じのアジェンダを考えたのですが・・・ここまではいらない?
> > ですか?
>
> そうですねぇ.
> 「概要」の「diconファイルの設定で動作する」は少し微妙.
> S2Container は dicon ファイル無しでも使えますからね.
>
> 「仕組み」は「ライフサイクル」とした方がいいですね.
> その前に「構造」みたいなのが欲しいかなぁ.
> 構造というのは,S2コンテナはインクルードされたコンテナと
> コンポーネント定義を持ち,階層を成しているということ.
> 一つのコンテナは複数のコンテナをインクルードすることができて,
> 一つのコンテナは複数のコンテナからインクルードされることが
> できるということ.
> 一つのコンポーネント定義は一つのコンテナにしか
> 所有されないということ.
> などなど.
>
>
> --
> <component name="koichik">
> <property name="fullName">"Koichi Kobayashi"</property>
> <property name="email">"koichik @ improvement.jp"</property>
> <property name="blog">"http://d.hatena.ne.jp/koichik"</property>
> </component>
>
> _______________________________________________
> seasar-javadoc mailing list
> seasar-javadoc @ ml.seasar.org
> https://www.seasar.org/mailman/listinfo/seasar-javadoc
>
--
-----------------------------
http://d.hatena.ne.jp/vestige/
http://www001.upp.so-net.ne.jp/vestige/
seasar-javadoc メーリングリストの案内