singleton="false" 也就是单例配置模式! 比如配置bean的时候 1有关bean设置为单例还是原型,究竟怎么确定? 2与jsf结合使用时,原来jsf托管的bean的有效范围,怎么在spring的配置中反映出来呢? 设置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没有绝对的原则,需要结合实际情况分析 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方法。 对于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=true 3)对象a在生命周期中,被多个对象b,c,d,...引用,如果程序期望b,c,d,...不共享对象a(即b对象修改了引用的a对象的状态,c对象所引用的a对象不能被修改,亦即b引用的a != c引用的a),那么令singleton=false
XML中singleton模式 摘
最新推荐文章于 2020-11-20 15:37:58 发布