代码之家  ›  专栏  ›  技术社区  ›  sergionni

Spring:将bean的属性(引用到其他bean)定义为可选的

  •  0
  • sergionni  · 技术社区  · 14 年前

    有两个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

    3 回复  |  直到 14 年前
        1
  •  2
  •   skaffman    14 年前

    你不能,如果你提到 B 然后 必须存在。你需要确保某种存根 存在,其定义将被 在里面 b.xml .

    或者,不要注射 进入之内 A ,但制造 仰望 使用 BeanFactory.getBean("B") 以及处理潜在的 以编程方式。

        2
  •  1
  •   Grzegorz Oledzki    14 年前

    还有一种可能性(除斯卡夫曼提出的建议外)是扭转这种依赖关系。让豆子 B 了解豆子 A . 它甚至可以在其中注册自己-也就是说,调用setter,例如:

    public class B {
      private A a;
    
      public void init() {
        a.setB(this);
      }
    }
    
        3
  •  0
  •   sergionni    14 年前

    @自动连线(必需=错误)帮助