Spring笔记之六(IoC Singleton)

Spring笔记之六(IoC Singleton)

    Spring中BeanFactory支持两个对象模型

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

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

实例:

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

   

     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编码。



 
凤凰涅槃/浴火重生/马不停蹄/只争朝夕
     隐姓埋名/低调华丽/简单生活/完美人生

你可能感兴趣的:(Spring笔记之六(IoC Singleton))