[Seasar-user:2082] Re: injectDependencyについて

Koichi Kobayashi koichik
2005年 6月 2日 (木) 01:00:46 JST


小林 (koichik) です.

On Wed, 01 Jun 2005 16:20:43 +0900
YOKOTA Takehiko <[E-MAIL ADDRESS DELETED]> wrote:

> ちなみに端的にやりたいことは、S2ベースアプリのオーバライドなんです。
> 既に存在するS2ベースアプリがあるとして、それをちょっとだけカスタマイズ
> したアプリを作る際に、直接元のアプリのdiconファイルをいじるのではなく、
> 元のアプリ用diconファイルにカスタマイズ分のdiconファイルを重ねるという
> 感じです。

なるほど.
このケースであれば,コンテナを初期化する前の段階で定義ファイルを
操作するという方法もありかもしれませんね.

ちょっと用途は違いますが,私の所では S2 の他 Spring,Apache Avalon など
XML による定義ファイルを使うフレームワークを使ったアプリが複数あります.
こいつらの定義ファイルは開発環境・テスト環境・本番環境ごとに異なった
定義が必要なものや,場合によってはホストごとに異なった定義が必要な
ものもあります.
そこで,基本的には本番環境に合わせた定義ファイルに,個別の環境や
ホストごとに異なった設定をするための XSLT を用意して,Ant で個別の
定義ファイルを作成するという仕掛けを用意しています.

この XSLT などによる変換を Ant のようなバッチ作業ではなく,
フレームワークの初期化時に行うようにすれば,S2 コンテナを
初期化した後に頑張る必要のある作業を減らせるかもしれません.
現在の XmlS2ContainerBuilder は定義ファイルのパスを ClassLoader から
取得するようになっていますが,そこを InputSource を受け取るような
Builder を作るだけでも可能性はかなり広がるような気がします.

> > DependencyInjectionUtil#injectDependency(Object target, S2Container container)
中略
> ちなみにこの中ではどういう処理を行なうのですか?container#getComponentDefとか
> を使うのでしょうか。

ふっふっふ.
5分とかけずに作った検証不十分版を添付したのでご覧ください.
# 我ながらこれで本当に大丈夫なのか不安です.簡単すぎて...
パッケージは org.seasar.extension.util になっていますが,現在の
S2 にはそんなパッケージはないので新しいパッケージ (フォルダ) を
作成してぶち込んでください.
これが実用的であれば,もう少しちゃんと検証&テストして S2 のリリースに
含められるように相談します.


-- 
<signature>
    <name>Koichi Kobayashi</name>
    <e-mail>[E-MAIL ADDRESS DELETED]</e-mail>
</signature>
-------------- next part --------------
テキスト形式以外の添付ファイルを除去しました...
ファイル名: DependencyInjectionUtil.java
型:         application/octet-stream
サイズ:     1706 バイト
説明:       無し
URL:        http://lists.sourceforge.jp/mailman/archives/seasar-user/attachments/20050602/66e7ed65/DependencyInjectionUtil.obj



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