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