[Seasar-user:12849] 手動登録Componentから自動登録Componentを使用する
"TAKEUCHI Shinichi / 竹
"TAKEUCHI Shinichi / 竹
2008年 2月 13日 (水) 17:37:39 JST
お世話になります、竹内と申します。
S2にて認証・承認・監査のフレームワークを作成しているのですが、
フレームワーク側は必ずしも規約どおりのパッケージ構成でなく、
Componentの数も少ないので、DiconにてS2Containerに登録して
いたのですが、そこからDAOなどの自動登録のコンポーネントを
呼び出そうとするとnullになってしまう現象が発生しました。
調べてみると、Diconの包含関係が不適切で、自動登録された
Componentは作成したDiconよりも上位になってしまうために
見えなくなるということが分かりました。
そこで、app.diconに直接定義を書いたのですが、やはり
認識できませんでした。自動登録はRootに登録されてしまう
ようで、手動で同階層として定義する方法が見つかりませでした。
対策として以下の2つを考えたのですが、他にもっと手軽な方法
や定番の方法がありますでしょうか?
1)手動登録のDiconの中で s2container.dicon を include してしまう。
例) A3Framework.dicon <===[これ自身は app.dicon にて include]
<components>
<include path="s2container.dicon"/>
<component name="xxx... 以下A3用Component定義
2)独自のCreatorを作成して、creator.dicon に追加する
例)指定のパッケージ内のクラスをなめて@Componentアノテーション
のついているクラスをRootContainerに登録する
(規約重視から設定重視になってしまいますが、
パッケージばかり増えてもなーという場合は便利かも)
--
(有)工楽房(コラボ)
TAKEUCHI Shinichi / 竹内 伸一 <[E-MAIL ADDRESS DELETED]>
Seasar-user メーリングリストの案内