我的Spring配置文件中有以下bean:
<bean id="myList" class="java.util.ArrayList">
<constructor-arg>
<list>
<ref bean="elem1"/>
<ref bean="elem2"/>
<ref bean="elem3"/>
<ref bean="elem4"/>
</list>
</constructor-arg>
</bean>
<bean id="elem4" class="myClass">
<property name="title" value="random4"/>
</bean>
<bean id="elem1" class="myClass">
<property name="title" value="random1"/>
</bean>
<bean id="elem3" class="myClass">
<property name="title" value="random3"/>
</bean>
<bean id="elem2" class="myClass">
<property name="title" value="random2"/>
</bean>
我注意到在我的应用程序中,myList中的元素按以下顺序排列:elem4,elem1,elem3,elem2。当我宣布ref bean(elem1,elem2,elem3,elem4)时,我期待列表中的元素将按照我设置的顺序排列。 是否有一个Spring初始化bean的顺序? 有没有办法可以为列表中的元素指定订单?
答案 0 :(得分:0)
春天确实尊重你在列表中给出的顺序。列表中的元素将完全是您指定的[elem1,elem2,elem3,elem4]。否则,你做错了什么,你能展示出打印不同订单的代码吗?
但是bean初始化的顺序可能会有所不同,并且取决于bean的依赖关系,所以,例如,如果你有两个bean
<bean id="holder" class="my.HolderBean" lazy-init="false">
<property name="inner" ref="inner"/>
</bean>
<bean id="inner" class="my.InnerBean" lazy-init="false"/>
然后,无论xml定义顺序如何,都将首先初始化InnerBean,然后在HolderBean初始化期间将其注入HolderBean。