[Seasar-user:6326] Re: コンテナに登録されているPOJOなクラスにインジェクトしたい

Koichi Kobayashi [E-MAIL ADDRESS DELETED]
2007年 2月 25日 (日) 00:00:39 JST


小林 (koichik) です.

Date:    Sat, 24 Feb 2007 09:00:11 +0900
From:    加藤 潤一 <[E-MAIL ADDRESS DELETED]>
To:      "[E-MAIL ADDRESS DELETED]" <[E-MAIL ADDRESS DELETED]>
Subject: [Seasar-user:6323] Re: コンテナに登録されているPOJOなクラスにインジェクトしたい

> ComponentDef[] defs = s2container.findAllComponentDefs(“/.*Job/”);
> 
> とさせるのはあまりよくないですかね? /がついているときだけPatternで検索みたいな。

ニーズ次第ではあるのですが...
〜Job クラスは必ず Job マーカインタフェースを実装するという
約束にしておいて,普通に

ComponentDef[] defs = container.getAllComponentDefs(Job.class);

で取得する方がいいのではないかという気のせいが.

> > とが,どう繋がるのかよく分かりませんでしたが.
> 
> 言葉足らずで、すみません。。。
> POJOのメソッドをリフレクションでコールしたかっただけです。おかげでなんとかなりそうです。

んー,やっぱりつながりません.
POJO のメソッドを呼び出すのと,パターンにマッチしたクラス名の
コンポーネントを全て取得することは無関係に思えるのですが.

それから,元々の投稿で「Teeda の Page クラスのように」と
書いておられますが,Teeda では findAllComponentDefs(“.*Job”)
のようなことはやってないはず.
Teeda の場合,リクエストされた URL からコンポーネント名を
求めて,その名前で普通に getComponent() してるだけだと
思いますよ.複数の Page クラスを取ってくるようなことは
してないと思います.

> えっと、それから
> 
> Object target = componentDef.getComponent();
> 
> すると、DIされたtargetが取得できるということでいいんですよね?

「DI された target」というのがよく分かりませんが,
普通に S2 コンテナに管理されてるコンポーネントのことなら
Yes です.


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