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