2010-11-25 4 views
0

имеют два бинов:Spring: определить свойства бина (реф в другой боб) в качестве необязательных

файл 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 боба быть необязательно, чтобы избежать org.springframework.beans.factory.NoSuchBeanDefinitionException

ответ

0

@Autowired (требуется = ложь) помогла

+0

как пришел? Вы не используете '@ autowired' в своей настройке. Как применяется аннотация? –

2

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

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

1

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

public class B { 
    private A a; 

    public void init() { 
    a.setB(this); 
    } 
}