zoukankan      html  css  js  c++  java
  • Spring.Net学习笔记四(IOC容器对象的作用域)

            容器中对象的部署分为两种方式:singleton和非singleton(java里叫prototype)。这里的singleton指的是“单例模式”,就是说当一个对象被定义为singleton时,容器中就只会有一个共享的实例,任何时候通过id或别名请求该对象都会返回这个共享实例的引用(也就是说这个对象只会被创建一次)。当使用非singleton,或者说原型模式布署时,每次请求对象都会创建新的实例。在某些场合,如果需要为每个用户返回单独的用户对象或其它对象,非singlton布署模式就比较理想。Spring.NET默认为singleton模式。每次调用GetObject方法时得到的都是同样的实例;当singleton="false"时,每次调用GetObject方法时得到的则是不同的实例。

         测试代码:

        

     1 static void Main(string[] args)
     2         {
     3 
     4             string[] xmlFiles = new string[] 
     5             {
     6                 "assembly:../../../../Objects.xml"
     7             };
     8             IApplicationContext context = new XmlApplicationContext(xmlFiles);
     9             IObjectFactory factory = (IObjectFactory)context;
    10 
    11             var obj1 = factory.GetObject("PersonDao");
    12             var obj2 = factory.GetObject("PersonDao");
    13             if (obj1.Equals(obj2))
    14             {
    15                 Console.WriteLine("同一个对象");
    16             }
    17 
    18             if (Object.ReferenceEquals(obj1, obj2))
    19             {
    20                 Console.WriteLine("同一个对象");
    21             }
    22             Console.ReadLine();
    23         }

    <!--非单例模式-->
       <object id="person" type="SpringNetScop.Person, SpringNetScop" singleton="false" />

       设成singleton=false后,每次调用GetObject方法获取的对象是不同实例的,当脱离调用方法的作用域后,该实例会被Spring.NET容器销毁。

       lazy-init属性是指:当Spring.NET容器初始化的时候标注该属性的对象将被实例化,反之则是调用GetObject方法的时候才被实例化。

    <!--调用时加载-->
     <object id="personServer" type="SpringNetScop.PersonServer, SpringNetScop" lazy-init="true" />

       设置为True时,实例化操作执行在new XmlApplicationContext(xmlFiles),设为false时,则执行在factory.GetObject("PersonDao");

       最后判断引用类型两个对象是否相等,可以参考:http://www.cnblogs.com/Dlonghow/archive/2008/08/04/1259732.html,这篇基本说的比较全,也好理解。

  • 相关阅读:
    ZOJ 3656Bit Magic解题报告——2sat问题建图总结
    gcc和g++的区别
    07车展,流水账。。
    放开思维啊~~~
    SC2和其他
    幻觉~
    去横店咯~
    ETS。。New G。。
    老子毕业鸟。。。
    gcc常用参数和环境变量小结
  • 原文地址:https://www.cnblogs.com/wangyhua/p/IOC4.html
Copyright © 2011-2022 走看看