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 ライフサイクルの初期化と破棄について学習しました。
本記事では、シンプルな例を組み合わせて、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
-
A detailed explanation of Hadoop core architecture HDFS
Knowledge Base Team
-
What Does IOT Mean
Knowledge Base Team
-
6 Optional Technologies for Data Storage
Knowledge Base Team
-
What Is Blockchain Technology
Knowledge Base Team
Explore More Special Offers
-
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
