http://community.csdn.net/Expert/topic/4990/4990620.xml?temp=.1180384
第一个问题。

解决方案 »

  1.   

    设置bean
    <bean id="xx" class="yy"/>
    属性缺省值是true,相当于
    <bean id="xx" class="yy" singleton="true"/>不要单例时,设置singleton="false"
    <bean id="xx" class="yy" singleton="false"/>什么时候设置singleton=false什么时候设置singleton=true,需要结合实际情况分析一般,对于immutable class也就是不变类,应该设置为singleton=true,即缺省值对于mutable class没有绝对的原则,需要结合实际情况分析
      

  2.   

    ustbzhangwei(wei)说得已经非常明白了
      

  3.   

    1如果你是想知道怎么在配置文件中配置单实例,ustbzhangwei(wei)说得已经非常明白了,如果你是问什么时候应该用singleton,这个没有定论,看你的业务需求,一般来说,没有全局变量的类(DAO)都应该定义为singleton,有全局变量的,如果其值不可变或者有业务需求,也应该设置为singleton,还有就是不可变类应该设置为singleton。
    ustbzhangwei(wei):
    “什么时候设置singleton=false什么时候设置singleton=true,需要结合实际情况分析一般,对于immutable class也就是不变类,应该设置为singleton=true,即缺省值对于mutable class没有绝对的原则,需要结合实际情况分析”
    2这个你不用费心,对Spring来说,如果是singleton,那么,就每次get都返回同一个Bean,如果不是,每次get就返回一个新创建的Bean。对jsf来说,它会根据bean的作用域来判断什么时候去调用Spring的get方法。
      

  4.   

    楼上的“如果是singleton,那么,就每次get都返回同一个Bean,如果不是,每次get就返回一个新创建的Bean”,了解!!!
    顶~~~~~~~~~~~
      

  5.   

    我的java群:10815536 开源系列
      

  6.   

    对于mutable对象,我再补充一下自己的一点浅薄的见识,欢迎大家批评指正为了方便描述,先假设对象a就是即将讨论的mutable对象
    假设引用对象a的对象是b,c,d,...1)对象a在生命周期中,只被一个对象b引用,那么可以令singleton=true(当然,也可以=false, 但是=true表示更准确)2)对象a在生命周期中,被多个对象b,c,d,...引用,如果程序期望b,c,d,...共享对象a(即在任意时刻b,c,d,...看到的对象a的状态都一致),那么令singleton=true3)对象a在生命周期中,被多个对象b,c,d,...引用,如果程序期望b,c,d,...不共享对象a(即b对象修改了引用的a对象的状态,c对象所引用的a对象不能被修改,亦即b引用的a != c引用的a),那么令singleton=false