インジェクタ生成プロセス
Guiceはコンフィギュレーションモジュールを使用してインジェクタを作成する。 以下のいずれのフェーズにおいても(最後に)エラーが発生している場合は、 インジェクタ生成は中止されCreationException例外が投げられる。
- フェーズ1: 静的な生成
このフェーズでは、Guiceは要素を解釈し、バインディングを生成し、コンフィギュレーションを検証する。 このフェーズで実行されるユーザコードとしてはModule.configure()のみである。
Stage.TOOLの元で実行される唯一のフェーズである。 (訳注:IDE内等で実行される場合のモード)
- フェーズ2: 注入
このフェーズの間オブジェクトが必要であればオンデマンドで注入される。 例えば、静的インジェクションがプロバイダインスタンスを必要とするなら、それ以前にプロバイダが注入される(訳注:注入対象になる?)。 初期化されたオブジェクトが循環依存している場合は注入順序は不定である。
最初に、requestStaticInjection()で登録された静的オブジェクトが注入される。 次に、requestInjection(), toInstance(), toProvider()で指定されたインスタンスが注入される。
- フェーズ3: シングルトンのプリローディング
Stage.PRODUCTIONにおいてはすべてのシングルトンが生成される。Stage.DEVELOPMENTではasEagerSingleton()スコープのバインディングのみが生成される。