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