讓我們假設如下情況。在Spring XML配置文件有創建豆類:Autowire @Resource from xml並將它們用於生成bean列表
<bean id="a" class="com.example.A" />
<bean id="b" class="com.example.B" />
<bean id="c" class="com.example.C" />
<bean id="d" class="com.example.D" >
<property name="myList" ref="myListBean">
</bean>
而Java的配置文件:
@Configuration
@ImportResource("path/to/beans.xml")
class JavaConfiguration {
@Resource
A a;
@Resource
B b;
@Resource
D d;
@Resource
C c;
@Bean
List myListBean(){
List l = new ArrayList();
l.add(a);
l.add(b);
l.add(c);
return l;
}
}
因爲@Resource d d是@Resource C C之前,豆 'myListBean' 將只包含{ A,b,NULL}。如果我切換它並@資源C在D之前,那麼一切都是好的。有沒有什麼好的做法來避免這種情況,不依賴於字段順序,並防止用空值創建bean列表?
如果你有一個Configuration類,我建議你在那裏定義所有的bean,只是因爲它更乾淨。然而,你可以在你的bean聲明中放置depends-on標誌。 –
我完全意識到我在這裏展示的例子並不是很好的做法。這是我正在進行的項目中遺留代碼的一部分。我想知道目前爲止我能否做得更好。我們將來會做重構,但這是更大的情況。 –