[Seasar-user:10143] Re: [teeda]アプリケーションの初期処理

Koichi Kobayashi [E-MAIL ADDRESS DELETED]
2007年 8月 28日 (火) 15:30:41 JST


小林 (koichik) です.

Date:    Tue, 28 Aug 2007 13:35:48 +0900
From:    shibuya <[E-MAIL ADDRESS DELETED]>
To:       [E-MAIL ADDRESS DELETED]
Subject: [Seasar-user:10140] [teeda]アプリケーションの初期処理

> =hoge.dicon=
> (略)
> <components>
>   <component name="initializeService" class="hoge.service.impl.InitializeServiceImpl">
>     <initMethod name="initialize" />
>   </component>
> </components>
> 
> ただこれですと、Implを設定しているため、
> InitializeServiceImplにメンバとして定義している
> XXhogeDaoに自動DIされません(nullになる)。

InitializeServiceImpl の XXhogeDao プロパティに
自動 DI されないということでしょうか?
通常は DI されるはずですが.

あるいは,XXhogeDao の initializeService
プロパティに自動 DI されないということ
でしょうか?
InitializeServiceImpl が InitializeService
インタフェースを実装していて,XXhogeDao の
initializeService プロパティの型が
InitializeService であれば自動 DI される
はずですが.

> こういう場合、どのように設定すればいいのでしょうか?
> 環境はDolteng0.21.0です。

上記の方法でも構わないですし,SMART deploy や
AutoRegister を使っていてコンポーネントの
定義を書きたくない場合はアノテーションで
初期化メソッドを指定することもできます.

public class InitializeServiceImpl implements InitializeService {
  public static final String COMPONENT = "instance=singleton";
  public static final String INIT_METHOD = "initialize";
    ...
}

Java5 であれば

@Component(instance=InstanceType.SINGLETON)
public class InitializeServiceImpl implements InitializeService {

  @InitMethod
  public void initialize() {
    ...
  }
  ...
}

SMART deploy では Service クラスのインスタンス
属性はデフォルトで prototype なので,
singleton を指定する必要があります.



--
<signature>
   <name>Koichi Kobayashi</name>
   <e-mail>[E-MAIL ADDRESS DELETED]</e-mail>
</signature>




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