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