Spring: определить свойство бина (ссылка на другой бин) как необязательное - PullRequest
0 голосов
/ 25 ноября 2010

Имеется два определения 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 не содержитопределение бобов Б.И с другой стороны, файл a.xml всегда содержит ссылку на определение B.

Как определить ссылку на bean-компонент B, чтобы она была необязательной , чтобы избежать org.springframework.beans.factory.NoSuchBeanDefinitionException

Ответы [ 3 ]

2 голосов
/ 25 ноября 2010

Вы не можете. Если у вас есть ссылка на B, то B должно существовать. Вы должны убедиться, что существует какой-то тип заглушки B, определение которого будет переопределено определением B в b.xml.

В качестве альтернативы, не вводите B в A, но заставьте A искать B, используя BeanFactory.getBean("B"), и обрабатывать потенциальное отсутствие B программно.

1 голос
/ 26 ноября 2010

Еще одна возможность (помимо предложенной skaffman) - изменить зависимость. Пусть боб B знает боб A. Он может даже зарегистрироваться в нем, то есть вызвать сеттер, например ::1003

public class B {
  private A a;

  public void init() {
    a.setB(this);
  }
}
0 голосов
/ 29 ноября 2010

@ Autowired (обязательно = false) помогло

...