Spring Boot の遅延ロードの仕組み

Spring Boot では、Spring Framework の遅延ロード機能に基づいて遅延ロードが実装されています。Spring では、デフォルトで、すべての Bean はコンテナの起動時にインスタンス化および初期化されます。つまり、アプリケーションに多数の Bean があり、一部の Bean の初期化に多大な時間とリソースが必要な場合、アプリケーション全体の起動時間が長くなる可能性があります。この問題を解決するために、Spring では遅延ロード機能が導入されました。Bean の初期化を最初の使用時に遅延することで、アプリケーションの起動時のオーバーヘッドを削減できます。これにより、アプリケーションの起動速度が向上し、Bean は必要な場合にのみインスタンス化および初期化されます。Spring Boot では、Bean の定義に @Lazy アノテーションを使用することで遅延ロードを有効にできます。Spring コンテナの起動時に、遅延ロードされた Bean は初期化されず、最初の使用時にのみインスタンス化および初期化されます。これは、依存注入でその Bean を使用するやり方によってトリガーできます。たとえば、遅延ロードを使用する例を以下に示します。

@Component
public class MyBean {

// … }


上記例で、MyBeanは遅延ロードBeanです。Springコンテナが起動するとき、MyBeanが即座にインスタンス化、初期化はされません。初めてMyBeanが利用されたときにのみ、インスタンス化、初期化されます。遅延ロードはSingletonスコープのBeanにのみ適用されることに注意してください。その他のスコープ(prototypeスコープなど)に対しては、遅延ロードは有効になりません。コンテナは起動時にそれらのBeanを直接インスタンス化、初期化します。まとめると、Spring Bootの遅延ロードの原理はBeanの初期化を遅延させることで、アプリケーションの起動時のオーバーヘッドを軽減し、アプリケーションの起動時間を向上させることです。

bannerAds