2017-10-22 22 views

答えて

0

これらの2つのファイルに異なるBean定義が含まれている場合、これらのファイルの両方にすべてのBean定義が作成されます。ファイルが同じ名前であるという事実は無関係です。

2つのファイルが同じのBeanを定義している場合、Springは後の定義で以前の定義を上書きします。たとえば:B.jar::spring-datasource.xmlC.jar::spring-datasource.xml場合の両方が、その後dataSourceという名前のBeanが含まれています...

  • は春がB.jar::spring-datasource.xmlに遭遇した場合、まずそれは、そのファイルに定義に従ってdataSource Beanを作成し、それがC.jar::spring-datasource.xmlに遭遇したとき、それは無効になりますdataSource beanの定義がC.jar::spring-datasource.xml bean.3にあります。
  • もしSpringが最初にC.jar::spring-datasource.xmlに遭遇すれば、その逆が起こります。

"encounters first"は、SpringがXML構成ファイル、つまりSpringコンテキストにロードされるときのファイルの順序付けを検出する方法を指します。通常、これはランタイムクラスパスの中でB.jarC.jarのオーダーで制御されます。あなたの豆はその後、宣言された順序に関する特定する必要がある場合は、このすなわち不安がある場合

次のいずれか

  • 同じ Bean名の複数の定義をお持ちでない
  • これは本当にない、あなたのクラスパスにB.jarC.jarの順序がお好み​​の順番

でSpringコンテキストにこれらのXMLファイルを提供していることを確認してくださいお勧めします。それは脆弱でエラーが起こりやすい。

FWIWは、@Primary注釈付きのJava設定を使用しているか、または読み込まれたSpring設定を制御するためにSpringプロファイルを使用することで、この状況をより詳細に制御できます。

関連する問題