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