2010-11-25 12 views
0

2つのBean定義があります。Spring:Beanのプロパティ(他のBeanへの参照)をオプションとして定義する

<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定義へのリンクを含んでいます。

org.springframework.beans.factory.NoSuchBeanDefinitionException

を避けるために、B beanへの参照を オプションのに定義する方法

答えて

0

@Autowired(偽=必須)来るか

+0

を助けましたか?あなたはあなたの設定で '@ autowired'を使用しません。注釈はどのように適用されますか? –

2

あなたがすることはできませんを避けるために、オプションするB Beanへの参照を定義する方法

Bへの参照がある場合は、Bが存在する必要があります。何らかの種類のスタブBが存在することを確認する必要があります。その定義はBの定義でオーバーライドされ、b.xmlになります。

また、ABを注入していないが、ABeanFactory.getBean("B")を使用してBを見えるようにし、プログラム的Bの可能性がないことを扱います。

1

さらに別の可能性(これらはスカフマンによって示唆されたものの上にある)は、熟練を逆転させることである。 Bean BにBean Aを知らせてください。それも、その中に自身を登録することができます - つまり、セッターを呼び出し、例えば:

public class B { 
    private A a; 

    public void init() { 
    a.setB(this); 
    } 
} 
関連する問題