[Seasar-user:15304] Re: 【Teeda】sessionのDIについて

r.m [E-MAIL ADDRESS DELETED]
2008年 8月 7日 (木) 18:25:20 JST


小林様
水澤です。

とりあえずですが、MasterHelperというのを作成し
helperパッケージに追加(MasterクラスをS2コンテナに登録する為)
内部で、
private TestDao testDao;
をDIで取得

サーバー起動時にInitializeをする設定をdiconに追加

これでやったところ、testDaoがDIされませんでした。
やはり、initializeの時には、Daoを用いた初期化は出来ないのでしょうか。

別の方法で
ServletContextListener を用いてWeb.xmlに初期化を定義し
実施すると
S2Containerが初期化後、MasterHelperを初期化するので
正常にDaoを用いた初期化が出来ました。


2008/08/07 17:45 r. m <[E-MAIL ADDRESS DELETED]>:
> 小林様
> 有難うございます。
>
> initialize + DAOをDIで取得
> で、一度試してみます。
>
>
> 2008/08/07 17:30 Koichi Kobayashi <[E-MAIL ADDRESS DELETED]>:
>> 小林 (koichik) です.
>>
>> Date:    Thu, 7 Aug 2008 17:10:51 +0900
>> From:    r.m <[E-MAIL ADDRESS DELETED]>
>> To:      [E-MAIL ADDRESS DELETED]
>> Subject: [Seasar-user:15298] Re: 【Teeda】sessionのDIについて
>>
>>>  ------------------ApplicationInitializer------------------
>>>  SingletonS2ContainerFactory.init();
>>>  S2Container container = SingletonS2ContainerFactory.getContainer();
>>>  container.init();
>>>  -----------------------------------------------------------
>>>
>>> この部分を削除すると、ApplicationInitializer 初期化処理内の後続処理において
>>> 例えば MasterInfoDao(マスター情報取得用)を取得する場合
>>> container.getComponent(MasterInfoDao.class)
>>> では、コンテナーがまだ初期化されておらず、コンポーネントが取得する事が出来ません。
>>> 通常こういった利用はしないのでしょうか?
>>
>> しません.
>> Dao を自分で取りに行くのではなく,DI してもらうのが
>> 通常の使い方です.
>>
>> public MasterInfoDao masterInfoDao;
>>
>> 注意点としては,Dao を AutoRegister で
>> 自動登録している場合,ApplicationInitializer は
>> AutoRegister よりも後に定義する必要があります.
>>
>>
>> --
>> <component name="koichik">
>>    <property name="fullName">"Koichi Kobayashi"</property>
>>    <property name="email">"[E-MAIL ADDRESS DELETED]"</property>
>>    <property name="blog">"http://d.hatena.ne.jp/koichik"</property>
>> </component>
>>
>> _______________________________________________
>> Seasar-user mailing list
>> [E-MAIL ADDRESS DELETED]
>> https://ml.seasar.org/mailman/listinfo/seasar-user
>>
>


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