Spring depends-on介紹


<!-- 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" />

4、初始化依賴關系不允許形成環閉依賴,下面的依賴關系定義是錯誤的,Spring將無法確定該如何實例化:

<bean id=a Class="com.twovv.A" depends-on="b" />
<bean id=b Class="com.twovv.B" depends-on="a" />


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM