[Seasar-user:329] Re: Seasar V2
B isid.co.jp Yasuo Higa
higa
2004年 1月 11日 (日) 19:31:18 JST
<[E-MAIL ADDRESS DELETED]> の、
"[Seasar-user:327] Re: Seasar V2" において、
"植山能成 <[E-MAIL ADDRESS DELETED]>"さんは書きました:
ひがです。
> 植山能成です。
>
> >ひがです。
> >
> >先日、Nazuna 2004の話をしたばかりですが、
> >思うところがあって、Seasar自身をLightweight Container
> >上で再構築しようと思います。
> >ProxyベースのAOPでいく予定です。
>
> ちょうど、PicoContainerを試し始めたところなんで、興味しんしんです
> Picoなら、org.picocontainer.lifecycleパッケージ内のクラスを
> 用いてseasarサービスの移行も楽でしょうし、
>
> このへんもすぐに実現できそうですね。ああ、ベースがPicoContainerならうれ
> しいなー。 あ、もしかして、Springの方を考えてるのでしょうか?どっちでし
> ょ?
PicoとSpring両方見ていますが、使うならSpringかなと
思ってます。
直感的に、コンストラクタベースのIoCは、問題が起こりそうな
気がします。
ただ、Springだとコンテナの設定ファイルが、
直ぐに肥大化してしまいそうです。
JavaBeansベース(Type2)で設定ファイルがなくても、自動設定
(Springのautowire)してくれるやつが欲しいんですけどね。
Type2のPicoで設定はコンポーネントごとの設定ファイルから
読み込まれるやつ。
有名な例でいくと、
class Girl {
Kissable kissable;
setKissable(Kissable kissable){
this.kissable = kissable;
}
void kissYourKissable(){
kissable.kiss();
}
}
interface Kissable {
void kiss();
}
class Boy implements Kissable {
void kiss(){
..
}
}
Girl.xml
<bean>
<property name="kissable">
<ref bean="Boy"/>
</property>
</bean>
使い方
Girl girl = (Girl) Container.getService(Girl.class);
girl.kissYourKissable();
設定ファイルがなくても、プロパティのクラスが実装クラスそのものか、
インターフェースでインターフェース名 + Implという
クラスがあれば、そのクラスを実装クラスとみなす
というロジックを入れておけば、たいていの場合は、設定ファイル
なしでもいけると思ってます。
設定ファイルが、個別のクラスの責任になるので、大規模な案件でも
設定ファイルの更新がぶつからなくなります。
設定ファイルも、それぞれの責任範囲に応じて、スコープを
できるだけ小さくしたほうがいいと思っているのですが、
今のIoCコンテナってそうなってないんですよね。
---
Yasuo Higa <[E-MAIL ADDRESS DELETED]>
INFORMATION SERVICES INTERNATIONAL-DENTSU,LTD.
Seasar-user メーリングリストの案内