0

有两个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 定义的链接。

如何定义对 B bean 的引用是可选的,以避免org.springframework.beans.factory.NoSuchBeanDefinitionException

4

3 回答 3

2

你不能。如果您有对 的引用B,则B必须存在。您需要确保存在某种存根B,其定义将被Bin的定义覆盖b.xml

或者,不要注入BA而是使用进行A查找,并以编程方式处理潜在的缺失。BBeanFactory.getBean("B")B

于 2010-11-25T11:02:17.617 回答
1

还有另一种可能性(除了 skaffman 建议的这些)是扭转依赖。让豆B认识豆A。它甚至可以在其中注册自己 - 即调用 setter,例如:

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 回答