[seasar-javadoc:348] Re: 【PropertyDef.java】

Koichi Kobayashi koichik @ improvement.jp
2006年 7月 12日 (水) 01:00:09 JST


小林 (koichik) です.

Date:    Tue, 11 Jul 2006 21:11:58 +0900
From:    きせのん <xenon.0907 @ gmail.com>
To:      seasar-javadoc @ ml.seasar.org
Subject: [seasar-javadoc:343] Re: 【PropertyDef.java】

メールの From: が「きせのん」のままですね.(^^;

> > ■インターフェース説明 冒頭
> >>  * コンポーネントのプロパティまたはフィールドに他のコンポーネントをインジェクションする方法を定義するインタフェースです。
> >  * コンポーネントのプロパティまたはフィールドを表すインターフェースです。
> > とかの方が自分としてはしっくりくるような…

これはちょっと違いますね.PropertyDef 自身はプロパティやフィールド
そのものを表すわけではなく,プロパティやフィールドにインジェクション
する情報を表します.
なんという名前のプロパティに,どのコンポーネントをインジェクション
するか,みたいな.
なので,前野さんの方がより正しいです.
ただ,ちょっと長くて分かりにくい気がするので,

* コンポーネントのプロパティまたはフィールドにインジェクションする方法を定義するインターフェースです。

でどうでしょう?
たいして短くなっていませんが.

> > ■インターフェース説明 中盤
(中略)
> name属性はコンポーネントのプロパティ名またはフィールド名を指定します。
> bindingType属性はname属性にて指定されたプロパティまたはフィールドに
> S2コンテナ内に格納されているコンポーネントを自動バインディングする際の
> 挙動を指定します。
> 
> いかがでしょうか?

分けた方が読みやすいですね.
一点,「自動バインディングする際の〜」の「自動」は不要です.
<property> 要素を指定するのは明示的なバインディングで,
自動バインディングではありません.
<property> 要素を書かなかった場合に自動で行われるのが
自動バインディングです.

> <property>タグの値(ボディ?)に指定された値は親要素である<component>が
> S2Containerに登録されたときに初期値としてname属性に指定されたプロパティ
> 名もしくはフィールド名に設定されます。
> 
> この指定によって実行されるインジェクションを「セッター・インジェクショ
> ン」と呼びます。

うーん,うーん,前半の文章はちょっと分かりにくいかも〜.
たぶん,「プロパティ名もしくはフィールド名に設定されます」は
「プロパティもしくはフィールドに設定されます」ですよね.
それが設定されるのは S2 コンテナに登録された時ではなくて,
コンポーネントがデプロイされる時になったり,outer の場合は
injectDependency() される時だったりします.
それから,<property> 要素の内容は式の場合と <component> 要素の
場合がありますが,式は評価すればコンポーネントだとして,
まとめると,

 * <code>&lt;property&gt;</code>要素の内容に指定された式または
 * コンポーネントが <code>&lt;property&gt;</code> 要素の
 * name 属性で指定されたプロパティもしくはフィールドに設定されます。

みたいな.
あ,「または」と「もしくは」が不揃いかも.

> > ■インターフェース説明 終盤
> >>  * プロパティ定義が存在する場合のプロパティインジェクション、またはフィールドインジェクションはdiconファイルに記述されているプロパティ定義に従って行われます。
> >>  * プロパティ定義が存在しない場合は、自動バインディングが行われます。 但し、自動バインディングが行われるのは自動バインディングが有効になっている時のみです。
> > 個人的には、青本のP.179にある
> > 「セッター・インジェクションの自動バインディング」表
> > があると、パッと見、分かりやすいかなぁと思ったり、願ったり。
> 
> なるほど。。。
> <td>タグを使えばすぐに出来ますね。

んと,自動バインディングに PropertyDef は関係してこないので,
それをここに書く必要はないと思うのですが.
# もう着手しちゃってたらごめんなさい.


・getPropertyName()

>      * 設定対象となるプロパティ名を返します。
>      * <p>
>      * インジェクション対象となるプロパティまたはフィールドを特定するためのものです。

「設定対象」と「インジェクション対象」を使い分ける必要は
なさそうなので,両方とも「インジェクション対象」でいいような.
これくらいだと 1 文でまとめてもいいかも.


> ps
> 国語力は私も無いです・・・。
> それ以前に知識の無さが意味不明な文章を形成しているので、
> Seasar2力もつけなきゃぁ。。

おいらも国語力ないです...
お互い頑張りませう.
# といいつつ自分では Javadoc 書いてないおいらなのであった.
# 心より恥じる.




-- 
<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 メーリングリストの案内