[Seasar-user:12854] Re: 手動登録Componentから自動登録Componentを使用する

Koichi Kobayashi [E-MAIL ADDRESS DELETED]
2008年 2月 13日 (水) 18:00:14 JST


小林 (koichik) です.

Date:    Wed, 13 Feb 2008 17:37:39 +0900
From:    "TAKEUCHI Shinichi / 竹内 伸一" <[E-MAIL ADDRESS DELETED]>
To:      <[E-MAIL ADDRESS DELETED]>
Subject: [Seasar-user:12849] 手動登録Componentから自動登録Componentを使用する

>   調べてみると、Diconの包含関係が不適切で、自動登録された
> Componentは作成したDiconよりも上位になってしまうために
> 見えなくなるということが分かりました。

その通りです.

>   そこで、app.diconに直接定義を書いたのですが、やはり
> 認識できませんでした。自動登録はRootに登録されてしまう
> ようで、手動で同階層として定義する方法が見つかりませでした。

通常は app.dicon がルートですが,違うのでしょうか?

ちなみに,S2(Framework)TestCase を使う場合はルートが
dicon を持たないコンテナになり,app.dicon はそこに
インクルードされます.
もし S2(Framework)TestCase を継承したクラスで
起きている問題であれば,テストクラスに

protected String getRootDicon() {
  return "app.dicon";
}

を定義して,setUp() では app.dicon をインクルード
しないようにしてください.

> 1)手動登録のDiconの中で s2container.dicon を include してしまう。

これはダメです.

> 2)独自のCreatorを作成して、creator.dicon に追加する
>      例)指定のパッケージ内のクラスをなめて@Componentアノテーション
>          のついているクラスをRootContainerに登録する
>          (規約重視から設定重視になってしまいますが、
>           パッケージばかり増えてもなーという場合は便利かも)

こちらでも RootContainer というのがよく分かりません.
もしかしたら s2container.dicon を読み込んだコンテナの
ことでしょうか?
だとすると,それは app.dicon を頂点とするコンテナ階層とは
独立した存在です.
決して app.dicon を読み込んだコンテナの親ではありません.
繰り返しになりますが,通常は app.dicon がルートコンテナです.

今ひとつ何をやっておられるのか状況が分からないので,
実際の dicon ファイルとログ等を見せてもらった方が
よさげです.


-- 
<component name="koichik">
    <property name="fullName">"Koichi Kobayashi"</property>
    <property name="email">"[E-MAIL ADDRESS DELETED]"</property>
    <property name="blog">"http://d.hatena.ne.jp/koichik"</property>
</component>



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