詳しくはSpringIOC BeanDeiftionを説明します。


BenDefitonは何ですか?
BenDefitionはSpringのPOJOに対する抽象的なもので、BenDefitionを通じてビーンをよりよく作成、管理します。
定義
意味
beanClass Name
beanの類名この属性は常にbeanが本当に使うクラスの名前に対応しているわけではない。beanはある種類の静的な工場方法で生成します。このbeanClass Nameはこのクラスです。Beanは工場Beanを通して生成します。ここはnullです。
scope
スコープまたはプロトタイプ
lazy Init
怠惰にBenFacotry中のBeanをロードするかどうかは、デフォルトで怠惰にロードし、Application Contectは初期化段階で実行されます。
depends On
依存するbeanの名前は抽象的なAbstractBenFacotryの中でdependun配列であり、これらが依存されるbeanが優先的に実用化されることを保証する。
factoryBenName
factoryBeanを使ってbeanを作成すれば、ここで該当する工場beanのクラス名を指定します。
facotryMethodName
工場の方法名は、クラスの静的工場法に基づく場合、BEAN Class Nameと結合して使用し、工場beanに基づく場合、facotryBenNameと結合して使用し、bean定義下のconstruct Argment Valuesに内容があれば、工場方法は呼び出された時にその属性を使用します。
ロル
beanのキャラクター:APPLICATION、SUPPORT、INFRASTRUCTURRE。ヒントフレームは、beanのキャラクターと重要度です。
Abstract BeanDefition
AbstractBenDefitionは、BenDefitionに対する追加であり、いくつかの公共構成と公共能力を定義しており、これについては言及しない。
全機能のBenDefiton
RootBenDefinitionparentbeanの定義を設定できません。彼自身がルートです。
ChildBenDefinitionparent beanを設定して定義しなければならないし、コンストラクタによって指定しなければならない。
GenricBeanDefinition
ダイナミック設定parent beanは、parent beandをセットしなくてもいいです。
MergedBenDefinition
私はSpringのソースコードを読んでいますが、MergedBeanDefinitiongetMergedLocalBeanDefinitionの方法に気づいています。MergedBeanDefitionはSpringの中の抽象的なBeanDefition概念です。その本質はRootBenDefinitionです。MergedBeanDefinitionは、中国語では、統合されたbeanと理解され、上記BeanDefitionにおいてparentbeanが規定されており、Springは、beanに対応するBeanDefitioneを確認し、スマート合併beanparentbeanとともに行われる。getMergedLocalBeanDefinition方法の要約によって、理解を深める。

synchronized (this.mergedBeanDefinitions) {
		//mbd->mergedBeanDefinition
		RootBeanDefinition mbd = null;
		RootBeanDefinition previous = null;
		if (mbd == null || mbd.stale) {
			previous = mbd;
      /** bd.getParentName() == null    
      	 beanDefition   RootBeanDefition
           beanDefition     parentBean GenricBeanDefition
      **/
			if (bd.getParentName() == null) {
					if (bd instanceof RootBeanDefinition) {
						mbd = ((RootBeanDefinition) bd).cloneBeanDefinition();
					}
					else {
						mbd = new RootBeanDefinition(bd);
					}
			}
      /** beanDefition   ChildBeanDefition**/
			else {
				BeanDefinition pbd;
				String parentBeanName = transformedBeanName(bd.getParentName());
				if (!beanName.equals(parentBeanName)) {
					pbd = getMergedBeanDefinition(parentBeanName);
				}
				else {
					BeanFactory parent = getParentBeanFactory();
					if (parent instanceof ConfigurableBeanFactory) {
          /     /
					pbd = ((ConfigurableBeanFactory) parent).getMergedBeanDefinition(parentBeanName);
					}
					mbd = new RootBeanDefinition(pbd);
					mbd.overrideFrom(bd);
				}
			}
			return mbd;
}
	
以上がSpringIOC BeanDeiftionの詳細です。SpringIOC BeanDeiftionに関する資料は他の関連記事に注目してください。