蒲公英
并非每个人都有羽化成羽化成鹰的运气,但我们至少都曾为鱼。
<bean id="person1"  class="com.bean.life.Person">
    <property name="name">
        <value>小明</value>
    </property>
</bean>
<bean id="person2"  class="com.bean.life.Person">
    <property name="name">
        <value>小红</value>
    </property>
</bean>
  刚接触spring两天,之前一直对这两个概念有误解,一直以为 singleton 说的是所有实现“同名class”的bean指向的是同一个java实例,以上面的bean为例,之前一直认为 person1、person2 是对同一 com.bean.life.Person 对象的引用,so foolish ,不论bean的作用域定位为 singleton 还是 prototype ,person1、person2 都是不同的实例 !
  正解是:xml 中配置的每一个 bean 都是不同的实例 !
  我们所说的的 singleton 指的是当我们用getBean()或 ref 获得一个 bean 的时候,到底得到的是同一个bean,还是每次都创建一个全新的 bean 实例。在Spring中所说的singleton、prototype都是针对的某“一个”bean。所以:
  singleton 指的是 single bean,每个 bean 都只有一个实例对象,不论调用多少次 getBean()方法,不论有多少 ref 依赖,spring 容器中都只有一个 bean 实例。
  prototype 指的是都针对这个 bean ,每当调用 getBean()方法,或是有 ref 依赖时,都会创建一个全新的 bean 实例,容器中有多个 bean 实例。
 
注:Spring 中的缺省作用域是: Singleton 。

 

posted on 2015-07-20 10:49  蒲公英1990  阅读(307)  评论(0编辑  收藏  举报