zoukankan      html  css  js  c++  java
  • 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" />
  • 相关阅读:
    配置HDFS HttpFS和WebHDFS
    编译hbase-1.2.3源代码
    Yarn application has already exited with state FINISHED
    一种基于Redis的10行代码实现IP频率控制方法
    PRId64的正确用法
    cmake检测g++编译器是否支持c++11
    定时取指定进程内存脚本
    C++常见gcc编译链接错误解决方法
    Congestion Avoidance in TCP
    Studying TCP's Throughput and Goodput using NS
  • 原文地址:https://www.cnblogs.com/zhishan/p/3190771.html
Copyright © 2011-2022 走看看