日付10.06午後
ポイント
単一豆の実施形態の完全な初期たBeanFactory
beanFactory.preInstantiateSingletons()
- で(すべてのBean定義情報を取得
beanDefinitionNames
トラバーサルリスト - Bean定義情報を取得するには
- Beanが抽象的ではない場合、それは怠惰なロードされていないシングルトンであり、
この豆FactoryBeanの(FactoryBeanのインタフェースを達成していない判定豆)は、その後、豆を作成するためにファクトリメソッドの内部で使用されているかどうかを決定します。
- コールは、
getbean(&beanname)
たBeanFactoryオブジェクトを取得します。
- コールは、
- するために呼び出す
getBean(beanName)
Beanを作成します- コール
doGetBean()
transformedBeanName
プレフィックスを削除する前に、豆の工場に入ります。この方法では、正式な名前の別名に変わりますgetSingleton
単一インスタンス豆の検出部は、実施形態にキャッシュが構築されてきたが、この単一の実施形態Beanに直接返すあり
この登録になりますシングルトンBeanを持っていたすべてのインスタンスは、検査は、作成プロセスには豆が存在しない現在の時間かどうかを判断します。いずれの場合には、なります/** Cache of singleton objects: bean name to bean instance. */ private final Map<String, Object> singletonObjects = new ConcurrentHashMap<>(256);
earlySingletonObjects
取得するために行く、これはそれを取得していない場合は、に行きますsingletonFactories
で取得するには、このマップ、取得した場合、削除singletonFactories
、順番に、BeanをearlySingletonObjects
内部にこのマップを登録します- (豆プロセスの作成を始める)Beanに取得していません
- 最初に決定する次の私たちは、循環参照を避けるために、Beanのインスタンスを作成しています。
- 親ビーン植物(Springmvc、そして親子の工場があるが存在する可能性がある場合、これは主に)親植物は、あなたがそれを得ることができれば、親植物未満を取得し、親植物の方法をdogetbean呼び出すために行くだろう取得、直接次のステップ
- 現在のBeanが作成されているマークし、現在BEANNAMEはおそらく入れ
Collections.newSetFromMap(new ConcurrentHashMap<>(256))
、数回は、シングルトンBeanを作成する際に、複数のスレッドを防ぐためにそこに - Bean定義情報を取得します。
- 追加の豆豆を入手することがあれば、依存、またはそれらの依存Beanを構築するためにgetbean方法を呼び出します
- BeanがシングルトンBeanがある場合は、バックオフ
createBean
、シングルトンBeanを作成するために開始- Bean定義情報を取得します。
- 分析定義情報を確認し、Beanタイプを定義したが、空たbeanClassではありません
- Beanメソッドがオーバーライドされているかどうかを検出する、任意のビーンは、このメソッドをオーバーライドするために調製された(内部情報のビーン定義をもチェック
methodOverrides
このプロパティは、値を持ちません) - BeanPostProcessor早期の傍受をしましょうとプロキシオブジェクトを返します
resolveBeforeInstantiation()
- 最初の定義情報によると、
beforeInstantiationResolved
何の初期化プロセスが存在しない決定する前に、このプロセッサには何も入力しないでください、と - この値は、アプリケーションによって定義され、現在の工場が既に有しているかを決定しないと判定され
InstantiationAwareBeanPostProcessor
、このプロセッサは、次に豆のターゲットクラスを取得し、次に呼び出すためにInstantiationAwareBeanPostProcessor.postProcessBeforeInstantiation
、呼び出し再び、前処理を起動し、値がある場合豆に戻りますapplyBeanPostProcessorsAfterInitialization
ポストプロセッサのBean定義情報と、その後beforeInstantiationResolved
Beanへのパラメータの割り当ては、Beanを返した後、返されました
- 最初の定義情報によると、
- コール