春のソースコードを解析する(2) - 春の豆が作成

豆Springコンテナを取得し、ビーンは、getBean()メソッドを呼び出します作成

getBean() - > doGetBean()
1.transformedBeanName(名);のbeanNameを取得するには、エイリアス(aliasMap)があるかもしれない
存在が返された場合、キャッシュ(singletonObjects)から取得し、2.getSingleton(のbeanName)
3.ゲット親コンテナを親コンテナの存在は、現在定義されているビーン現在のコンテナが存在しない場合、コンテナ、そして、それは親血管から取得しようと
4.getMergedLocalBeanDefinition(のbeanName);ビーンビーン定義を取得し、抽象クラスかどうかを確認するために
5.豆から依存し得ますビーン(DEPENDSON)、存在する場合、現在のプロセスgetBean(そのように作成するには、依存関係ビーンを作成することです)
6. singletionを作成し、()getSingletonを呼び出す- >したcreateBean() 、作成前と後のコンテナの様々な値を変更します競合又は場合再現防止するために
プロトタイプを作成したcreateBeanコール()7を、前または作成後に容器の種々の値を変更し再作成または競合状況防止
8.別のスコープ(要求、セッション)を作成します。あなたが要求またはセッションを作成する場合)以下の呼び出したcreateBeanを(取得、取得します、それは重複や競合状況を防ぐために作成し、作成前と後のコンテナの様々な値を変更します

たcreateBean()
1.resolveBeanClass(MBD、のbeanName);取得の豆タイプ
2.後処理InstantiationAwareBeanPostProcessor postProcessBeforeInstantiation(たbeanClass、のbeanName)メソッドを呼び出し
  、戻りオブジェクトの後処理は、後処理は(postProcessAfterInstantiationを呼び出すInstantiationAwareBeanPostProcessor場合たbeanClassは、のbeanName)メソッドはオブジェクトを返し、
  ポストプロセッサは、オブジェクトが作成される前に、AOPを達成するためのプロキシを作成するための機会をこのように使用されている役割です。
3.実呼びdoCreateBean(のbeanName、mbdToUse、引数)を作成する方法;
4コール後処理SmartInstantiationAwareBeanPostProcessor determineCandidateConstructors(たbeanClass、のbeanName)コンストラクタ取得方法
取得コンストラクタが電流で構成されている場合5.買収はinstantiateBean(のbeanName、MBD)を作成するために使用する引数なしのコンストラクタよりも小さい場合、オブジェクトを作成し、このBeanが作成されますが、初期化されていませんされています
6.コール・ポストプロセッサpostProcessMergedBeanDefinitionのMergedBeanDefinitionPostProcessor(MBD、beanType、のbeanName)メソッド
7。 populateBean(のbeanName、MBD、instanceWrapper) ; 充填ビーン、設定プロパティ
  コールpostProcessAfterInstantiation InstantiationAwareBeanPostProcessor 7.1後処理(たbeanClass、のbeanName)方法
  7.2ポストプロセッサInstantiationAwareBeanPostProcessorコールpostProcessPropertyValues()メソッドはPropertyValues返す
  7.3 applyPropertyValues(のbeanName、MBD、BW、PVS)、属性値がアプリケーションに戻され
8.initializeBeanを(のbeanName、exposedObject、MBD)は、初期化ビーン
  7.1インターフェース方法を認識invokeAwareMethods()を呼び出します。BeanNameAware、BeanClassLoaderAware、BeanFactoryAware
  7.2コールpostProcessBeforeInitializationの後処理BeanPostProcessorの()メソッド
  初期化メソッドinvokeInitMethodsを(実行する7.3)。Beanの注釈付きメソッド@ InitializingBean.afterPropertiesSet()にinitMethod属性が指定
  postProcessAfterInitialization 7.4コールポストプロセッサBeanPostProcessor()メソッド
  ビーン属性はビーン注釈destoryMethod @、破壊の方法を指定する方法があるかどうかを決定するために7.5。DisposableBeanAdapterとしてパッケージングの方法であれば、容器を呼び出すために閉じられたとき、容器に注ぎ

 

"春のソース解決の(a) - Springコンテナの更新"

《Spring源码解析(二)--Spring Bean创建》

おすすめ

転載: www.cnblogs.com/zhuqianchang/p/11418189.html