[Seasar-user:2143] Re: injectDependencyについて
Masataka Kurihara
kurihara
2005年 6月 8日 (水) 10:16:44 JST
栗原です。
> ComponentsTagHandler handler = new ComponentsTagHandler();
> handler.setContainerImplClass(MyS2Container.class); //追加メソッド
> S2ContainerTagHandlerRule rule = new S2ContainerTagHandlerRule();
> rule.addTagHandler("/components", handler);
> XmlS2ContainerBuilder.setRule(rule); //追加メソッド
> ともあれ (JW),injectDependency() の件はなしにしたいなっと.
> 自分の感覚では上の対応はありだけど injectDependency() のあれは
> ちょっといやーんなので.
感覚だけの話だと、私は逆です。が、もう両方やっといたほうがいいん
じゃないかなぁ。
一方、実装方法はともかく、コンポーネント定義が無いときに、その問題
解決をS2ContainerImplでなく、ComponentDeployerFactoryに持って
いってもらうのが、なぜに「いやーん」なのかちょっと感覚を共有できてない。
コンテナのカスタマイズポイントを一箇所に集中させたほうが、効率的かと
思います。
/*ComponentDeployer のカスタマイズ実装*/
public class HogeComponentDeployer
extends AbstractComponentDeployer {
//実装
}
/*ComponentDeployerFacotoryの継承カスタマイズ*/
public class HogeFactory extends ComponentDeployerFacotory {
public ComponentDeployer create(ComponentDef componentDef) {
if(componentDef instanceof NullComponentDef) {
return HogeComponentDeployer.getInstance();
}
return super.create(componentDef);
}
}
/*アプリケーションコードのどこか*/
static {
ComponentDeployerFacotory.setDefaultFactory(new HogeFactory());
}
このstaticメソッド一発で、既存と新規の切り替えが可能なので、シンプル
じゃないですか。あとは、HogeComponentDeployerで作りこみすればいい
わけです。こっちのほうがキレイだと思うけど、いかがでしょう?
--
株式会社グルージェント
栗原 傑享(くりはら まさたか)
渋谷区渋谷3-7-6 第6矢木ビル4F
TEL:03-5469-8869 FAX:03-5469-8879
URL:http://www.gluegent.com/
--
Seasar-user メーリングリストの案内