2016-06-13 5 views
2

アプリケーションでは、Spring Beansを広く使用しています。循環起動依存性が存在するというアプリケーション起動エラーがランダムに表示されます。しかし、このエラーは常に発生するわけではありませんが、複数の再起動でランダムに発生します。 ランダム性の原因は何でしょうか?循環依存関係が存在する場合、なぜそれは一貫して失敗/成功しないのですか?円Beanの依存関係が存在する場合のSpring Bean作成時のランダム性

例外: org.springframework.beans.factory.BeanCurrentlyInCreationException: エラー名でBeanを作成する「X」:要求されたBeanが 作成中です:解決不可能な循環参照はありますか?

答えて

2

スプリングはBeanを初期化するプロセスを開始し、プロセスの循環参照を知るようになります。コンストラクタベースまたはメンバベースの自動配線が使用されているかどうかに応じて、循環参照が成功する場合と成功しない場合があります。循環依存チェーンが発生する可能性があるシナリオの下にオートワイヤリングコンストラクタオートワイヤリングやメンバを使用していますに関与 2の場合のクラス:

  1. コンストラクタオートワイヤリング+コンストラクタオートワイヤリング=ビーンの初期化は、常にinitialzationに依存
  2. コンストラクタオートワイヤリング+メンバーオートワイヤリング=失敗を失敗します。注文(ランダムでもよい) a。 Constructor autowiringを持つBeanが最初に初期化されると、Beanの初期化は失敗します。 b。メンバーautowiringを持つBeanが最初に初期化されると、Beanの初期化は成功します。あなたが円形Dpendencyを持っているとオートワイヤリングは、循環依存関係の解決に失敗/(2)、あなたは成功し、ランダムに観察することができるカテゴリーに該当する場合
  3. メンバーオートワイヤリング+メンバーオートワイヤリング=ビーンの初期化は常に、

そうでも循環依存して成功します。

+0

啓発いただきありがとうございます:-)このバーハビールについての公式ソースはありますか? – Sebastian

関連する問題