SpringBootでBeanがロードされるプロセスを教えてください。
Spring Bootでは、Beanのロード処理は次のような手順で行われます。
- @Componentアノテーションをスキャン: Spring Bootはアプリ内の@Componentアノテーションでマークされたすべてのクラスをスキャンして、Beanとしてロードします。
- スキャンされたクラスに基づいてインスタンスオブジェクトを作成し、Springコンテナに入れ、ビーンをインスタンス化する
- 依存性注入の処理:Spring BootがBeanの中の依存関係を調べ依存性注入します。依存性注入は、コンストラクタインジェクション(コンストラクタ注入)、プロパティインジェクション(プロパティ注入)、メソッドインジェクション(メソッド注入)のいずれかで実現できます。
- 初期化Bean:Spring Boot は、依存性の注入が完了した後に Bean の初期化メソッド(存在する場合)を呼び出します。初期化メソッドには @PostConstruct アノテーションでマークを付けることができます。
- AOP関連の代理処理: Spring Bootは、BeanがAspectとして定義されていた場合、そのBeanに対して代理オブジェクトを作成し、Springコンテナにその代理オブジェクトを格納します。
- 完了:これらの手順が完了すると、Beanのロードプロセスは完了し、アプリケーションで使用できるようになります。
Spring BootではBeanをロードする際、デフォルトのルールに従って自動設定が行われることに注意してください。また、@Configurationアノテーションを使用してBeanを手動設定することもできます。さらに、Spring Bootでは@SpringBootApplication、@EnableAutoConfigurationなどの特別なアノテーションを提供し、Beanのロードと設定プロセスを簡略化しています。