Spring笔记之六(IoC Singleton)

 Spring中BeanFactory支持两个对象模型

单态: 模型提供了具有特定名称的对象的共享实例,可以在查询时对其进行检索。Singleton 是默认的也是最常用的对象模型。对于无状态   服务对象很理想。

原型: 模型确保每次检索都会创建单独的对象。在每个用户都需要自己的对象时,原型模型最适合。

实例:
 1  <  beans  >
 2      
 3       <!-- non-singleton examples -->
 4      <bean id="nonSingleton" class="java.lang.String" singleton="true">
 5          <constructor-arg>
 6               <value>Value</value>(来源www.iocblog.net)
 7          </constructor-arg>
 8       </bean>
 9  
10  </beans>
11
12 singleton:指定此JavaBean是否采用单例(Singleton)模式,如果设为"true",则在BeanFactory作用范围内,只维护此 JavaBean  的一个实例,代码通过BeanFactory   获得此JavaBean  实例的引用。反之,如果设为"false",则通过 BeanFactory获取此Java Bean  实例时,BeanFactory每次都将创建一个新的实例返回。
(来源www.iocblog.net)

  
     1 public class NonSingleton {
 2
 3 public static void main(String[] args) {
 4 
 5 BeanFactory factory = new XmlBeanFactory(new FileSystemResource(
 6                     "build/beans.xml"));
 7       
 8    String s1 = (String)factory.getBean("nonSingleton");
 9    String s2 = (String)factory.getBean("nonSingleton");
10    System.out.println("Identity Equal?: " + (s1 ==s2));
11    System.out.println("Value Equal:? " + s1.equals(s2));
12    System.out.println(s1);
13    System.out.println(s2);
14  }
15 }

   分析结果:

   Identity Equal?: true
Value Equal:? true
Value
Value

   由结果可以看出由fantory产生的bean对象只有一个。


  注意: 在Spring中消除了由用户自己来实现Singleton模式的应用,Spring Bean的缺省行为就是Singleton,不必再为了Singleton编码。




文章整理:iocblog
版权申明:本站文章均来自网络,如有侵权,请联系我们,我们收到后立即删除,谢谢!
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有。