美文网首页
Spring depends-on介绍

Spring depends-on介绍

作者: 剑书藏于西 | 来源:发表于2018-11-24 15:44 被阅读0次
    <!-- redis配置 -->
    <bean id="jedisPoolConfig" class="redis.clients.jedis.JedisPoolConfig">
        <property name="maxActive" value="20" />
        <property name="maxIdle" value="10" />
        <property name="maxWait" value="1000" />
        <property name="testOnBorrow" value="true" />
    </bean>
    <!-- jedis pool配置 -->
    <bean id="jedisPool" class="redis.clients.jedis.JedisPool" destroy-method="destroy" depends-on="jedisPoolConfig">
        <constructor-arg ref="jedisPoolConfig" />
        <constructor-arg value="127.0.0.1" />
        <constructor-arg type="int" value="6379" />
    </bean>
    

      上面的代码是jedisPool交给spring处理的代码,比普通bean配置多了一个属性depends-on,这里就记录一下depends-on属性的作用和注意点:
    作用:depends-on用来指定Bean初始化及销毁时的顺序。
    如上面jedis pool定义depend-on="jedisPoolConfig",这意味着Spring总会保证jedisPoolConfig在jedisPool之前实例化,总是在jedisPool之后再销毁。
    适用的场景:用来确定bean定义中依赖关系不明确或者没有直接依赖关系时,指定bean在初始化或销毁时的明确顺序。

    需要注意的特点:

    1. Spring管理的bean都是单例模式(singleton)
    2. 实例化对象应该顺序化的,比如A依赖B,B依赖C,C依赖D...
    3. 一个bean可以依赖多个bean,可以通过逗号(",")或者分号(";")来定义多个依赖对象:
    <bean id=a Class="com.twovv.A" depends-on="b,c,d" />
    <bean id=b Class="com.twovv.B" />
    <bean id=c Class="com.twovv.C" />
    <bean id=d Class="com.twovv.D" />
    
    1. 初始化依赖关系不允许形成环闭依赖,下面的依赖关系定义是错误的,Spring将无法确定该如何实例化:
    <bean id=a Class="com.twovv.A" depends-on="b" />
    <bean id=b Class="com.twovv.B" depends-on="a" />
    

    相关文章

      网友评论

          本文标题:Spring depends-on介绍

          本文链接:https://www.haomeiwen.com/subject/szcyqqtx.html