Spring.net(容器中对象的作用域)

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

namespace FirstSpringNetApp
{
    public class PersonDao
    {
        public override string ToString()
        {
            return "我是PersonDao";
        }
        class Person {
            public override string ToString()
            {
                return "我是Person";
            }
        }

        public static PersonDao createInstance()
        {
            return new PersonDao();
        }
    }
}
Objects.xml

<object id="PersonDao" type="FirstSpringNetApp.PersonDao, FirstSpringNetApp" />

 

 static void Main(string[] args)
        {
           // AppRegistry();
            IApplicationContext ctx = ContextRegistry.GetContext();
            PersonDao p1 = (PersonDao)ctx.GetObject("PersonDao");
            PersonDao p2 = (PersonDao)ctx.GetObject("PersonDao");
            Console.WriteLine(p1 == p2);
           // Console.WriteLine(ctx.GetObject("instancePersonDao").ToString());
            Console.ReadLine();
        }

输入为TRUE,默认singleton="true"

如果:

<object id="PersonDao" type="FirstSpringNetApp.PersonDao, FirstSpringNetApp"  singleton="false"/>

输出为:FALSE

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值