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