[Seasar-user:10145] Re: [teeda]アプリケーションの初期処理
shibuya
[E-MAIL ADDRESS DELETED]
2007年 8月 28日 (火) 17:45:09 JST
お世話になっております、渋谷です。
小林様・ひが様、ご回答ありがとうございます。
結果報告をさせていただきますと、
diconファイルに設定する方法では、
相変わらずDaoプロパティがnullのままでした。
そもそも下記の様に記述しますと、diconファイルに
「XXDaoプロパティがnullになります。」という警告が出ます。
何か設定が足りないのだと思いますが。
<components>
<component instance="singleton"
name="initializeService"
class="hoge.service.impl.InitializeServiceImpl">
<initMethod name="initialize" />
</component>
</components>
アノテーションで設定する方法では、
無事にDaoプロパティをDIすることができました。
@Component(name="initializeService", instance=InstanceType.SINGLETON)
public class InitializeServiceImpl implements InitializeService {
@InitMethod
public void initialize() {
以上、よろしくお願いします。
> ひがです。
> >
> > お世話になっております、渋谷です。
> >
> > Teedaではページ単位の初期処理は、
> > 「XXPage#initialize()」で実行できますが、
> > アプリケーション起動時に初期処理を実行したい場合に
> > どうすればいいでしょうか?
> >
> > 試してみた方法は、
> > app.diconにインクルードしたhoge.diconに記述する方法です。
> >
> > =hoge.dicon=
> > (略)
> > <components>
> > <component name="initializeService" class="hoge.service.impl.
> InitializeServiceImpl">
> > <initMethod name="initialize" />
> > </component>
> > </components>
> >
> > ただこれですと、Implを設定しているため、
> > InitializeServiceImplにメンバとして定義している
> > XXhogeDaoに自動DIされません(nullになる)。
> >
> app.diconにInitializeServiceImplを記述すると
> DaoもDIされるようになります。
>
> ただし、その場合、InitializeServiceImplもDaoも
> そのDaoで使っているEntityやDTOもHOT deployされなくなるので
> その点は注意が必要です。
>
> InitializeServiceImpl専用のDao,Entity,DTOを作るのが
> 良いと思います。
>
> よろしくお願いします。
>
> --
> Yasuo Higa
> [E-MAIL ADDRESS DELETED]
> _______________________________________________
> Seasar-user mailing list
> [E-MAIL ADDRESS DELETED]
> https://ml.seasar.org/mailman/listinfo/seasar-user
>
> 小林 (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 mailing list
> [E-MAIL ADDRESS DELETED]
> https://ml.seasar.org/mailman/listinfo/seasar-user
>
Seasar-user メーリングリストの案内