[Seasar-user:19871] COOL DEPLOYで親子関係にあるクラスの親が DI されないパターン?

江川直峰 [E-MAIL ADDRESS DELETED]
2010年 6月 18日 (金) 14:06:38 JST


はじめまして。江川と申します。

s2-framework-2.4.41 と s2jdbc-gen-2.4.41 の組み合わせで、COOL DEPLOY 動
作時に、親子関係にある Service クラスが DI されない問題に遭遇しています。

発生条件は、Service クラスの生成場所をデフォルトの service パッケージ直
下ではなくそのサブパッケージに設定して、かつその子クラスも存在し、親クラ
スも子クラスも DI 対象となっているときです。

・Service クラス
service.hoge.ParentService(genで生成されたもの)
service.hoge.ChildService(ParentServiceを継承)

・DI
public ParentService parentService; (リクエスト時にESSR0080が発生)

コンテナ起動時のコンポーネント登録フェーズでは親子ともに正常に登録されて
いるようですが、リクエスト時にコンポーネントの検索に失敗しているような感
じです。

親子関係にあるコンポーネントの DI については、[CONTAINER-374] の対応時
に、クラスで検索できなかった場合は名前による(DI 対象の変数名による)検
索を行うようになって解決されたと思いますが、親がサブパッケージ以下にある
場合にこの名前による検索が空振りしているのではないかと予測します。

その証拠に、DI 変数の変数名を parentService から hoge_parentService に変
更すると問題なく DI されます。

回避策として、親を抽象クラスにする、または、親をサブパッケージに置かな
い、など、いくつか手がありますので、現状としては困っていません。

ご報告まで。



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