让我们假设以下情况。在spring 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之前,因此Bean'myListBean'将只包含{a,b,null}。如果我切换它并且@Resource C在D之前,那么一切都很好。是否有任何良好的做法可以避免这种情况,不依赖于字段顺序并阻止创建带有空值的bean列表?
答案 0 :(得分:0)
我认为没有办法完全按照自己的意愿行事。
如果两者之间没有依赖关系,则无法保证在myListBean之前由Spring注入C.如果你需要C有一个正确的myListBean,那么应该有一个依赖。