Bean life cycle initialization and destruction

1. 背景

本記事では、シンプルな例を組み合わせて、Bean ライフサイクルの初期化フェーズと破棄フェーズの具体的な内容を学びます。

2. 分析

まず推測してから検証します。インスタンス化、プロパティの注入、初期化、破棄の順です。具体的には、インタフェースを実装した初期化メソッドが先に実行されるか、カスタム初期化メソッドが先に実行されるかは、コードに依存します。

ブレークポイントを使用したデバッグ手法で分析・学習します。各メソッドにブレークポイントを設定してデバッグします。
[1] コンストラクタの実行
[2] setValue メソッドの実行
【3】InitializingBean#afterPropertiesSet メソッドの実行
[4] init-method の実行
コアメソッド AbstractApplicationContext#refresh
@Override
public void refresh() throws BeansException, IllegalStateException {
synchronized (this.startupShutdownMonitor) {
// このコンテキストの準備をします。
//1 初期化前の準備
prepareRefresh();

// サブクラスに内部 Bean ファクトリをリフレッシュするよう指示します。
//2 BeanFactory の取得、すべての Bean 定義情報のロード (インスタンス化前)
ConfigurableListableBeanFactory beanFactory = obtainFreshBeanFactory();

// このコンテキストで使用する Bean ファクトリの事前処理を行います。
// 3 BeanFactory の事前処理設定
prepareBeanFactory(beanFactory);

try {
// コンテキストのサブクラスでの Bean ファクトリの後処理を許可します。
// 4. BeanFactory 完了後の後処理の準備
postProcessBeanFactory(beanFactory);

// コンテキスト内で Bean として登録されたファクトリプロセッサを呼び出します。
// 5. BeanFactory 作成後の後処理プロセッサの実行
invokeBeanFactoryPostProcessors(beanFactory);
[1] インスタンス化、[2] プロパティの注入、[3] afterPropertiesSet、[4] カスタム初期化メソッドはすべてステップ 11 に含まれます。

コアメソッド:
org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory#doCreateBean

【5】DisposableBean#destroy 破棄メソッドの実行

3. まとめ
本記事では、主に推測と検証の手法、およびコードデバッグの手法を用いて、Bean ライフサイクルの初期化と破棄について学習しました。

Related Articles

Explore More Special Offers

  1. Short Message Service(SMS) & Mail Service

    50,000 email package starts as low as USD 1.99, 120 short messages start at only USD 1.00

phone お問い合わせ
Hi, I'm Alibaba Cloud AI Assistant!
I can help with questions and solutions.