[seasar-javadoc:553] Re: S2Container
Makoto Yonezawa
stratosphire @ gmail.com
2006年 9月 6日 (水) 03:13:02 JST
また風邪をひきそーな米澤です。
早く正常な生活が取り戻したいです--;
JUNDOさん、小林さんからのコメントから修正したメソッドコメントと、
クラスコメントを少し書いてみました。
というか、やはり、クラスコメント難航しそうです(+_+
なんかまだ整理ができていないためか、どうかいていいやら・・・
つっこみのほどお願いします。
■戻り値の修正
findComponents
/**
* 指定されたキーに対応する複数のコンポーネントを検索して返します。
* <P>
* 検索の範囲は現在のS2コンテナおよび、インクルードしているS2コンテナの階層全体です。
* キーに対応するコンポーネントが最初に見つかったS2コンテナを対象とします。
* このS2コンテナから,キーに対応する全てのコンポーネントを配列で返します。
* 返される配列に含まれるコンポーネントは全て同一のS2コンテナに登録されたものです。
* </P>
*
* @param componentKey
* コンポーネントを取得するためのキー
* @return
* キーに対応するコンポーネントの配列を返します。
* キーに対応するコンポーネントが存在しない場合は長さ0の配列を返します。
* @throws CyclicReferenceRuntimeException
* コンストラクター・インジェクションでコンポーネントの参照が循環している場合
* @see #findAllComponents
* @see #findLocalComponents
*/
Object[] findComponents(Object componentKey)
throws CyclicReferenceRuntimeException;
findAllComponents
findLocalComponents
も同様に修正。
findComponentDefs
/**
* 指定されたキーに対応する複数のコンポーネント定義を検索して返します。
* <P>
* 検索の範囲は現在のS2コンテナおよび、インクルードしているS2コンテナの階層全体です。
* キーに対応するコンポーネントが最初に見つかったS2コンテナを対象とします。
* このS2コンテナから,キーに対応する全てのコンポーネント定義を配列で返します。
* 返される配列に含まれるコンポーネント定義は全て同一のS2コンテナに登録されたものです。
* </P>
*
* @param componentKey
* コンポーネント定義を取得するためのキー
* @return
* キーに対応するコンポーネント定義の配列を返します。
* キーに対応するコンポーネント定義が存在しない場合は長さ0の配列を返します。
* @see #findAllComponentDefs
* @see #findLocalComponentDefs
*/
ComponentDef[] findComponentDefs(Object componentKey);
findAllComponents
findLocalComponents
も同様に修正。
■インジェクションの修正
/**
* <code>componentClass</code>をキーとして登録された
* {@link ComponentDef コンポーネント定義}に従って、必要なコンポーネントのインジェクションを実行します。
* アスペクト、コンストラクタ・インジェクションは適用できません。
* <P>
* {@link ComponentDef コンポーネント定義}の{@link InstanceDef インスタンス定義}は
* {@link InstanceDef#OUTER_NAME outer}でなくてはなりません。
* </P>
* @param outerComponent 外部コンポーネント
* @param componentClass コンポーネント定義のキー (クラス)
* @throws ClassUnmatchRuntimeException 適合するコンポーネント定義が見つからない場合
*/
void injectDependency(Object outerComponent, Class componentClass)
throws ClassUnmatchRuntimeException;
injectDependency(Object outerComponent, String componentName)
injectDependency(Object outerComponent)
も同様にコンポーネント定義を見つけるくだりを削除しました。
■register(Object)
/**
* コンポーネントを登録します。
* <P>
* S2コンテナに無名のコンポーネントとして登録します。
* 登録されたコンポーネントはインジェクションやアスペクトの適用などは出来ません。
* 他のコンポーネント構築時に依存オブジェクトとして利用することが可能です。
* </P>
*
* @param component コンポーネント
*/
void register(Object component);
register(Object component, String componentName)
こちらのコメントがさびしくなりました--;
なにか付け加えた方がいいですか?
■クラスコメント
2つの話。(コンテナのコンポーネントの扱い、コンテナ階層について)
*コンテナのコンポーネントの扱い
コンテナがコンポーネント定義に従って、コンポーネントの生成、初期化を行います。
コンポーネントはコンテナ内に保持されます。
必要に応じて利用したいコンポーネントを取得します。
ここから先どんな風にかいたらいいですか?
というか、そもそもこのくだりでいいですか?
コンポーネント(定義)の検索についても触れなければいけないだろうし、
インジェクションの種類にも触れた方がいいですよね・・・
うう、困りました。
06/09/01 に Makoto Yonezawa<stratosphire @ gmail.com> さんは書きました:
> 米澤です。
>
> Jundoさん、小林さん、コメントありがとうございます。
> まずはお二人の意見をメソッドコメントにFBしてから、
> またクラスコメントをすこしずつ書いていきたいと思います。
>
> まだもう少し道のりが長いかも知れないですが、よろしくお願いしますm_ _m
>
>
> 06/09/01 に Koichi Kobayashi<koichik @ improvement.jp> さんは書きました:
> > 小林 (koichik) です.
> >
> > Date: Mon, 28 Aug 2006 10:12:11 +0900
> > From: "Makoto Yonezawa" <stratosphire @ gmail.com>
> > To: seasar-javadoc @ ml.seasar.org
> > Subject: [seasar-javadoc:524] Re: S2Container
> >
> > > まずは、メソッドコメントをすべて書いたものを添付します。
> > >
> > > 長いですが、確認お願いします。
> >
> > ありがとうございました.
> > こちらについては Jundo さんのレスにコメントします.
> > 個人的にはいい感じになったと思います.
> >
> > 以下はクラスコメントについて.
> >
> >
> > > それとクラスコメントですが、
> > > もう一度メソッドを整理すると、
> > >
> > > コンポーネントを取得
> > > getComponent
> > > コンポーネントを検索
> > > findComponents
> > > findAllComponents
> > > findLocalComponents
> > > コンポーネント定義を取得
> > > getComponentDefSize
> > > getComponentDef
> > > コンポーネント定義を検索
> > > findComponentDefs
> > > findAllComponentDefs
> > > findLocalComponentDefs
> > > hasComponentDef
> > > コンポーネントの登録
> > > register
> >
> > ここまでと
> >
> > > DIする(依存性の注入)=メソッドの実行?
> > > injectDependency
> >
> > が DI コンテナとしての基本的な機能というか,コンポーネントを
> > 扱うためのインタフェースですね.
> > そして,
> >
> > > コンテナのお世話
> > > hasDescendant
> > > getDescendant
> > > registerDescendant
> > > include
> > > getChildSize
> > > getChild
> > > getParentSize
> > > getParent
> > > addParent
> > > init
> > > destroy
> > > getRoot
> > > setRoot
> > > 名前空間について
> > > getNamespace
> > > setNamespace
> > > getPath
> > > setPath
> > > 外部コンテキストについて
> > > getExternalContext
> > > setExternalContext
> > > getExternalContextComponentDefRegister
> > > setExternalContextComponentDefRegister
> > > クラスローダー
> > > getClassLoader
> > > setClassLoader
> > > マップ
> > > registerMap
> >
> > この辺は全部ひっくるめて「コンテナのお世話」でいいかも.
> > コンポーネントではなく,コンテナ自身あるいはコンテナの階層を
> > 扱うためのインタフェースです.
> >
> > もし分けるなら,階層に関わるかどうかで
> >
> > コンテナ自身のお世話
> > > getNamespace
> > > setNamespace
> > > getPath
> > > setPath
> > > getClassLoader
> > > setClassLoader
> > > init
> > > destroy
> >
> > コンテナ階層のお世話
> > > hasDescendant
> > > getDescendant
> > > registerDescendant
> > > include
> > > getChildSize
> > > getChild
> > > getParentSize
> > > getParent
> > > addParent
> > > getRoot
> > > setRoot
> > > registerMap
> >
> > というのもありかと.
> > init / destroy はライフサイクルとして別にしてもいいかも.
> >
> > なお,setPath / getPath は名前空間とは関係なくて,dicon ファイルなど,
> > コンテナの定義を記述したリソースのパスを設定したり取得するものです.
> >
> > クラスコメントに記述する内容も,コンテナがコンポーネントを
> > 扱う話と,コンテナ階層の話を大きな柱とするのがいいかも.
> > なので,
> >
> > > 詳細は、上のものから、すこし詳細を説明
> > > ・コンポーネントの管理
> > > ・コンテナの管理
> >
> > の「コンテナの管理」で階層のことまで説明するのがよいかと.
> > それを踏まえておけば,
> >
> > > ・DI
> >
> > ここで DI 対象のコンポーネントがどのように決まるかの説明も
> > しやすくていいかも.
> >
> > > あとは、
> > > ・ライフサイクル
> > > ・インジェクションの種類
> > > ・コンテナの構造>>>階層化されていることについて
> > >
> > > こんな骨組み?
> >
> > これらは上の方に含まれちゃうような.
> >
> > > うーん、まだどうかいていいやら・・・
> > > すいません、助言のほどよろしくお願いしますm__m
> >
> > 同じくどう書いてイイやら悩んでしまいます.(^^;
> > ともあれ (JW),いきなり大きく考えずに,少しずつ書きながら
> > みんなの意見を集めるということでどうでしょう?
> > # 超他力本願寺 (^^;
> >
> > クラスコメントの構成について,あまり詳細に考え過ぎると
> > なかなか手が動かなくなりそうなので,詳細は後回しにして
> > いいんじゃないかと思います.
> >
> > そんなわけで (どんなわけで?),まずはコンテナの基本機能として,
> > コンポーネントを取り扱っているところから書き始めてみては
> > いかがでしょうか.
> >
> > 頑張れ〜.
> >
> >
> > --
> > <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/
>
--
-----------------------------
http://d.hatena.ne.jp/vestige/
http://www001.upp.so-net.ne.jp/vestige/
seasar-javadoc メーリングリストの案内