アノテーションインターフェース Lazy
@Component でアノテーションが付けられたクラスに直接または間接的に、または @Bean でアノテーションが付けられたメソッドで使用できます。
このアノテーションが @Component または @Bean 定義に存在しない場合、先行初期化が行われます。存在し、true に設定されている場合、@Bean または @Component は、別の Bean によって参照されるか、それを囲む BeanFactory から明示的に取得されるまで初期化されません。存在し、false に設定されている場合、Bean は、シングルトンの先行初期化を実行する Bean ファクトリによって起動時にインスタンス化されます。
Lazy が @Configuration クラスに存在する場合、これは、その @Configuration 内のすべての @Bean メソッドを遅延初期化する必要があることを示します。@Lazy が存在し、@Lazy アノテーション付き @Configuration クラス内の @Bean メソッドに false が存在する場合、これは「デフォルトの遅延」動作をオーバーライドし、Bean を積極的に初期化する必要があることを示します。
コンポーネントの初期化のロールに加えて、このアノテーションは、Autowired または InjectEE でマークされたインジェクションポイントに配置することもできます。そのコンテキストでは、影響を受ける依存関係の遅延解決プロキシが作成され、シングルトンの場合は最初のアクセス時にキャッシュされ、それ以外の場合はアクセスごとに再解決されます。これは、ObjectFactory または ProviderEE を使用する代わりに使用できます。このような遅延解決プロキシは常に注入されることに注意してください。ターゲットの依存関係が存在しない場合は、呼び出し時に例外によってのみ確認できます。結果として、このようなインジェクションポイントは、オプションの依存関係に対して直感的でない動作を引き起こします。より洗練された遅延参照を可能にするプログラム的な同等物として、ObjectProvider を検討してください。
- 導入:
- 3.0
- 作成者:
- Chris Beams, Juergen Hoeller
- 関連事項:
オプション要素の概要
オプション要素
要素の詳細
value
boolean value遅延初期化を行うかどうか。- デフォルト:
- true