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