Package nablarch.core.repository.di
Class DiContainer
java.lang.Object
nablarch.core.repository.di.DiContainer
- All Implemented Interfaces:
ObjectLoader
DIコンテナの機能を実現するクラス。
staticプロパティへのインジェクションは行われない。
インジェクションの対象となるプロパティがstaticである場合、例外が発生する。
後方互換性を維持するするため、システムプロパティ"nablarch.diContainer.allowStaticInjection"に
true
を設定することで、staticプロパティへのインジェクションを許可できる。
後方互換性維持以外の目的での使用は推奨しない。- Author:
- Koichi Asano
-
Constructor Summary
ConstructorDescriptionDiContainer
(ComponentDefinitionLoader loader) コンストラクタ。DiContainer
(ComponentDefinitionLoader loader, boolean allowStaticInjection) コンストラクタ。 -
Method Summary
Modifier and TypeMethodDescriptionint
コンポーネントIDの最大値を取得する。getComponentById
(int id) コンポーネントIDをキーにコンポーネントを取得する。<T> T
getComponentByName
(String name) コンポーネント名をキーにコンポーネントを取得する。<T> T
getComponentByType
(Class<T> type) コンポーネントの型をキーにコンポーネントを取得する。load()
DIしたオブジェクトを取得するロードメソッド。protected ExternalizedComponentDefinitionLoader
void
reload()
コンテナの保持するオブジェクトの再生成を行う。
オブジェクトの再生成は下記順序で行う。 設定の読み込み コンポーネント定義の登録 コンポーネント定義にあるObjectLoaderの生成とObjectLoader内のコンポーネントのロード システムプロパティによるコンポーネント定義の上書き コンポーネントの生成 コンポーネントに対するインジェクションの実行 初期化対象クラスの初期化実行
-
Constructor Details
-
DiContainer
コンストラクタ。- Parameters:
loader
- コンポーネント定義のローダ
-
DiContainer
コンストラクタ。- Parameters:
loader
- コンポーネント定義のローダallowStaticInjection
- staticプロパティへのインジェクションを許容するかどうか
-
-
Method Details
-
loadExternalizedComponentDefinitionLoader
ExternalizedComponentDefinitionLoader
をServiceLoader
を使って読み込む。ExternalizedComponentDefinitionLoader
のサービスプロバイダが設定されていない場合は、 後方互換を維持するためにSystemPropertyExternalizedLoader
が使用されます。- Returns:
- ロードされた
ExternalizedComponentDefinitionLoader
-
load
DIしたオブジェクトを取得するロードメソッド。- Specified by:
load
in interfaceObjectLoader
- Returns:
- 名前をキーにしてロードしたオブジェクトを保持するMap。
- See Also:
-
generateId
public int generateId()コンポーネントIDの最大値を取得する。- Returns:
- コンポーネントIDの最大値
-
reload
public void reload()コンテナの保持するオブジェクトの再生成を行う。
オブジェクトの再生成は下記順序で行う。- 設定の読み込み
- コンポーネント定義の登録
- コンポーネント定義にあるObjectLoaderの生成とObjectLoader内のコンポーネントのロード
- システムプロパティによるコンポーネント定義の上書き
- コンポーネントの生成
- コンポーネントに対するインジェクションの実行
- 初期化対象クラスの初期化実行
-
getComponentById
コンポーネントIDをキーにコンポーネントを取得する。- Parameters:
id
- コンポーネントID- Returns:
- コンポーネント
-
getComponentByName
コンポーネント名をキーにコンポーネントを取得する。- Type Parameters:
T
- コンポーネントの型- Parameters:
name
- コンポーネント名- Returns:
- コンポーネント
-
getComponentByType
コンポーネントの型をキーにコンポーネントを取得する。- Type Parameters:
T
- コンポーネントの型- Parameters:
type
- コンポーネントの型- Returns:
- コンポーネント
-