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