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

Koichi Kobayashi koichik
2005年 6月 4日 (土) 04:40:33 JST


小林 (koichik) です.

On Sat, 04 Jun 2005 01:10:14 +0900
Koichi Kobayashi <[E-MAIL ADDRESS DELETED]> wrote:

> この二つは排他的じゃないので,DependencyInjectionUtil でも
> プロパティ名によるフィルタリングをサポートしようと思います.

そんなわけで (どんなわけで?),対応しました.
というか,Util じゃなくてコンポーネントにしました.
なので,パッケージは org.seasar.extension.component に
インタフェース,その下の impl に実装.
使い方は

DependencyInjector injector = new DependencyInjectorImpl(container);
injector.setIgnoreNames("foo, ba*");

としておいて,

injector.injectDependency(target);

という感じです.

が,このコンポーネントは dicon に書く方がおすすめ.
コンストラクタ引数のコンテナは自動インジェクションにお任せ.
そのコンテナが DI の際にコンポーネントを引っ張ってくるコンテナに
なるので,このコンポーネントをどの dicon に書くかでスコープを
制限することができます.
全コンポーネントを対象にしたければルートの dicon (app.dicon) に
定義するか,コンストラクタ引数でルートコンテナを明示的に指定します.

<component class="org.seasar.extension.component.impl.DependencyInjector">
  <arg>container.root</arg>
</component>


setIgnoreNames() に渡す文字列はカンマ区切りで,個々の名前の末尾のみ
ワイルドカード (*) が使えます.正規表現じゃないので .* にする必要なし.
先頭や途中にはワイルドカードは使えないので,もっと凝った指定が必要なら

injector.setIgnorePattern("hoge.*hoge");

って感じで正規表現を指定することができます.
# カンマ区切りの正規表現ってなんかやなので分けちゃいました.
# 正規表現には | があるわけで.
ignoreNames と ignorePattern のどちらにも引っかからなかった
プロパティが DI の対象になります.

DI の際は最初にプロパティの型で探して,見つからない or TooMany に
なった場合はプロパティの名前で探しにいきます.
名前が見つからなければ無視,名前が TooMany だとそのまま例外が
吹っ飛びます.


-- 
<signature>
    <name>Koichi Kobayashi</name>
    <e-mail>[E-MAIL ADDRESS DELETED]</e-mail>
</signature>
-------------- next part --------------
テキスト形式以外の添付ファイルを除去しました...
ファイル名: DependencyInjector.java
型:         application/octet-stream
サイズ:     158 バイト
説明:       無し
URL:        http://lists.sourceforge.jp/mailman/archives/seasar-user/attachments/20050604/3e4547ac/DependencyInjector-0001.obj
-------------- next part --------------
テキスト形式以外の添付ファイルを除去しました...
ファイル名: DependencyInjectorImpl.java
型:         application/octet-stream
サイズ:     3791 バイト
説明:       無し
URL:        http://lists.sourceforge.jp/mailman/archives/seasar-user/attachments/20050604/3e4547ac/DependencyInjectorImpl-0001.obj
-------------- next part --------------
テキスト形式以外の添付ファイルを除去しました...
ファイル名: DependencyInjectorImplTest.java
型:         application/octet-stream
サイズ:     4487 バイト
説明:       無し
URL:        http://lists.sourceforge.jp/mailman/archives/seasar-user/attachments/20050604/3e4547ac/DependencyInjectorImplTest-0002.obj
-------------- next part --------------
テキスト形式以外の添付ファイルを除去しました...
ファイル名: DependencyInjectorImplTest.dicon
型:         application/octet-stream
サイズ:     1207 バイト
説明:       無し
URL:        http://lists.sourceforge.jp/mailman/archives/seasar-user/attachments/20050604/3e4547ac/DependencyInjectorImplTest-0003.obj



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