加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Java > 正文

java – Spring中bean初始化的顺序

发布时间:2020-12-15 02:08:54 所属栏目:Java 来源:网络整理
导读:我的 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/beanbean id="elem4" class="myClass" property
我的 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,elem4)时,我期待列表中的元素将按照我设置的顺序排列.
是否有一个Spring初始化bean的顺序?
有没有办法可以为列表中的元素指定订单?

解决方法

弹簧确实尊重您在列表中给出的顺序.列表中的元素将完全是您指定的[elem1,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.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读