0

2つのBean定義があります。

ファイルa.xml

<bean id="A" class="com.A">
 <property name="bClass" ref="B"/>
</bean>

ファイルb.xml

<bean id="B" class="com.B"/>

場合によっては、ファイルb.xmlにBean Bの定義が含まれていません。
また、反対側から見ると、ファイルa.xmlには常にB定義へのリンクが含まれています。

回避するために、BBeanへの参照をオプションとして定義する方法org.springframework.beans.factory.NoSuchBeanDefinitionException

4

3 に答える 3

2

できません。への参照がある場合は、B存在Bする必要があります。ある種のスタブBが存在することを確認する必要があります。その定義は、の定義によって上書きされBますb.xml

または、に注入せずBA、を使用してA検索し、プログラムで存在しない可能性を処理します。BBeanFactory.getBean("B")B

于 2010-11-25T11:02:17.617 に答える
1

さらに別の可能性(skaffmanによって提案されたこれらに加えて)は、依存関係を逆転させることです。BeanにBeanBを知らせますA。それ自体をその中に登録することもできます-つまり、セッターを呼び出します。例:

public class B {
  private A a;

  public void init() {
    a.setB(this);
  }
}
于 2010-11-26T15:27:29.437 に答える
0

@Autowired(required = false)が役立ちました

于 2010-11-29T16:31:09.967 に答える