[Seasar-user:2108] Re: injectDependencyについて

Masataka Kurihara kurihara
2005年 6月 6日 (月) 17:33:16 JST


栗原です。

> hasComponent() / hasComponentDef() を使えば定義の有無はチェックできるので,

  例外の出所を変えたいのは、S2ContainerImplの、
public void injectDependency(
    Object outerComponent, Class componentClass) {
  getComponentDef(componentClass).injectDependency(outerComponent);
}
public void injectDependency(
    Object outerComponent, String componentName) {
  getComponentDef(componentName).injectDependency(outerComponent);
}
において、ComponentNotFoundになっちゃうからです。NullConponentDefを
返してインジェクション処理をしたいのですね。外部のUtilではなくて、コンテ
ナの機能として定義無しのコンポーネントにouterインジェクションする方法
です。
  ですから、先の振る舞いが変えようというのは、Whatではなく、HowToなので
そこには、こだわりありません。

public void injectDependency(
    Object outerComponent, Class componentClass) {
  ComponentDef def;
  if(hasComponentDef(componentClass)) {
    def = getComponentDef(componentClass);
  } else {
    def = NullComponentDef.getInstance();
  }
  def.injectDependency(outerComponent);
}

こういう感じでOKです。

--
株式会社グルージェント
栗原 傑享(くりはら まさたか)
渋谷区渋谷3-7-6 第6矢木ビル4F
TEL:03-5469-8869 FAX:03-5469-8879
URL:http://www.gluegent.com/
--





Seasar-user メーリングリストの案内