有两个bean定义:
file a.xml
<bean id="A" class="com.A">
<property name="bClass" ref="B"/>
</bean>
file b.xml
<bean id="B" class="com.B"/>
在某些情况下,文件b.xml不包含bean B的定义 从另一方面来说,文件a.xml始终包含指向B定义的链接。
如何将对B bean的引用定义为可选,以避免org.springframework.beans.factory.NoSuchBeanDefinitionException
答案 0 :(得分:2)
你做不到。如果您引用B
,则必须存在B
。您需要确保存在某种存根B
,其定义将被B
中b.xml
的定义所覆盖。
或者,不要将B
注入A
,而是A
使用B
查找BeanFactory.getBean("B")
,并处理B
的可能缺席1}}以编程方式。
答案 1 :(得分:1)
另一种可能性(除了skaffman建议的这些)是扭转依赖性。让bean B
知道bean A
。它甚至可以在其中注册 - 也就是说,调用setter,例如:
public class B {
private A a;
public void init() {
a.setB(this);
}
}
答案 2 :(得分:0)
@Autowired(required = false)帮助