@TargetSE(valueSE={TYPESE,METHODSE,CONSTRUCTORSE,PARAMETERSE,FIELDSE}) @RetentionSE(valueSE=RUNTIMESE) @DocumentedSE public @interface 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
を検討してください。
Primary
, Bean
, Configuration
, Component
修飾子と型 | オプションの要素と説明 |
---|---|
boolean | value 遅延初期化を行うかどうか。 |