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