[Seasar-user:19874] Re: COOL DEPLOYで親子関係にあるクラスの親が DI されないパターン?
江川直峰
[E-MAIL ADDRESS DELETED]
2010年 6月 18日 (金) 15:35:52 JST
江川です。
(2010/06/18 15:00), Koichi Kobayashi wrote:
> 小林 (koichik) です.
>
> Date: Fri, 18 Jun 2010 14:06:38 +0900
> From: 江川直峰<[E-MAIL ADDRESS DELETED]>
> To: [E-MAIL ADDRESS DELETED]
> Subject: [Seasar-user:19871] COOL DEPLOYで親子関係にあるクラスの親が DI されないパターン?
>
>> s2-framework-2.4.41 と s2jdbc-gen-2.4.41 の組み合わせで、COOL DEPLOY 動
>> 作時に、親子関係にある Service クラスが DI されない問題に遭遇しています。
> (略)
>> ・Service クラス
>> service.hoge.ParentService(genで生成されたもの)
>> service.hoge.ChildService(ParentServiceを継承)
>
> その場合はそれぞれ,hoge_parentService,
> hoge_childService という名前で自動登録
> されるので (名前もログに出力されます),
>
>> DI 変数の変数名を parentService から hoge_parentService に変
>> 更すると問題なく DI されます。
>
> が正しいです.
わかりました。
> プロパティ名が parentService だと,
> 登録されている名前とマッチしないために
> 型で DI しようとして TooManyRegistration〜
> となっているのではないでしょうか.
そうですね。型のマッチングは componentDef=TooManyRegistration〜 で戻っ
てきて false になり、次の名前のマッチングに入ってます。
> おそらく HOT では動いているのに COOL で
> 動かないことが問題ということですよね?
はい。
> HOT の場合は親子とも事前には登録されず,
> リクエストされた際に型から ParentService
> だけが自動登録されるので,TooManyRegistration〜
> は発生しません.そのために動いてしまいます.
ですね。
試していませんが、1つのリクエストで親と子を両方 DI しようとしたらやは
り同じ問題に遭遇するのでしょうか。(そんなときは DI しようとしているほう
を直せば良いのですが)
> できるだけ HOT と COOL の挙動の違いを
> なくそうと修正を重ねてきましたが,このケースは
> HOT の時に毎回クラスを全てスキャンしないと
> 解消できないので,対応する予定はありません.
そこまでの改造となると、安定版にはそぐわない感じですね。
> なので,
>
>> 回避策として、親を抽象クラスにする、または、親をサブパッケージに置かな
>> い、など、いくつか手がありますので、現状としては困っていません。
>
> ということでお願いします.
了解しました。
ありがとうございました。
Seasar-user メーリングリストの案内