Springの高度なソースコードノート:BeanFactory作成プロセスに付随するコード実装の包括的な分析!

1つは、BeanFactoryサブプロセスを取得する

タイミング図は以下の通りです


この記事では、アシスタントVXを追加する必要がある学生の「SpringAdvanced SourceNotes」を参照しています:C18173184271無料アクセス

春のインタビュー特集記事はこちら!

2つ目は、BeanDefinitionの読み込み分析と登録サブプロセスです。

1.このサブプロセスには、次の主要なステップが含まれます

リソースの配置BeanDefinition適切なリソースの配置プロセスを指します。一般的に言えば、Javabean情報定義するXMLファイルを見つけてそれをResourceオブジェクトにカプセル化することです。

BeanDefinitionのロード:ユーザー定義のデータ構造はJavabeanIoCコンテナの内部データ構造として表されBeanDefinitionます。

BeanDefinitionをIoCコンテナに登録します

2.プロセス分析

1 STEP:サブプロセスエントリAbstractRefreshableApplicationContext#refreshBeanFactoryにおける方法

ステップ2:ターンコールの複数のクラスloadBeanDefinitionsメソッド- > AbstractXmlApplicationContext- > AbstractBeanDefinitionReader- >XmlBeanDefinitionReaderまで行うのdoLoadBeanDefinitions方法ステップ3:我々は、観察に焦点を当てるクラスregisterBeanDefinitions方法は、重負荷の時間中に生成呼び出し、ここで最後を見つけます。2つの領域に焦点を当てます。createRederContextメソッド。これはregisterBeanDefinitionsメソッドのクラスです。最初にcreateRederContextメソッド入力するとSpringが最初の初期化を完了したことがわかります。XmlBeanDefinitionReader

XmlBeanDefinitionReader

DefaultBeanDefinitionDocumentReader

NamespaceHandlerResolver

私たちは、その後、入力registerBeanDefinitions方法を追跡し、呼び出すためにDefaultBeanDefinitionDocumentReader#registerBeanDefinitions方法を。

入力doRegisterBeanDefinitions方法を。

入力parseBeanDefinitions方法を。

入力parseDefaultElement方法を。

入力processBeanDefinition方法を。

この時点で、登録プロセスは終わりました。これらの構造的編成に基づいてBeanDefinition、オブジェクトをマップに追加した後です。このマップの定義はで見ることができますBeanFactoryMapBeanDefinition

DefaultListableBeanFactory

/** Map of bean definition objects, keyed by bean name. */
private final Map<String, BeanDefinition> beanDefinitionMap = new ConcurrentHashMap<>(256);

3.タイミング図

このフルバージョンの「SpringAdvancedSource Notes」が必要な場合は、私の記事をサポートするだけで済みます。

多くのサポート、あなたは無料で情報を得ることができます-3年連続で(約束:100%無料)

クイックスタートチャンネル:アシスタントVXを追加:C18173184271無料で入手!誠意あふれる!

春のインタビュー特集記事はこちら!

おすすめ

転載: blog.csdn.net/Java_Caiyo/article/details/112954635