各位,实在不好意思,因为有事,博客几天没更新了.前面有童鞋提到,配置 Objects.xml 路径的相关问题,这些东西是 IResource 接口的一些内容.在下一章会详细介绍. 传统的Net应用中,对象的生命周期非常简单..Net中的关键词 new 用来实例化对象(或许它是非序列化的).这样就够用了.相反,对象 的生命周期在 Spring.Net 容器中更加细致.理解 Spring.Net 对象的生命周期非常重要,因为你或许要利用 Spring.Net 提供的机制来订制对象的创建过程.我们在前…
在前面一章我们介绍了依赖注入,控制反转的概念,以及自己动手搭建了一下Spring.Net的环境.通过这些操作,我们知道了Spring.Net 的核心是使用依赖注入或控制反转这种思想来管理业务对象,降低程序的依赖耦合.这一次的笔记,就是来了解一下,Spring.Net 如何管理我们的类. 4.1  对象,对象工厂和应用程序上下文介绍 在前面的章节,我们曾稍微提到过关于对象,对象工厂和应用程序上下文.我们也知道了可以用这些接口来管理对象,接下来会详细介绍他们. Spring.Core 程序集是Spr…
前面我们知道了什么是对象,什么是对象工厂,什么是应用程序上下文.这一次我们来看一下对象的装配. Spring.Net 中有多种装配对象的方式,装配这个词可能比较学术化,我们可以理解为对象的创建. Spring.Net 中常用的装配方式有 手动装配和自动装配.手动装配就是根据配置文件然后装配对象,而自动装配是指Spring.Net根据指定的自动模式查找相关属性并自动装配.这两种装配方式之下又分为 通过属性进行装配,通过构造器进行装配,通过静态工厂装配,通过实例工厂装配,泛型的装配等等.这些装配方式…
Spring.Net 中对象的作用域,就是描述对象的部署模式 ,Spring.Net 中对象可以通过两种模式布署: ① singleton(单例模式) ② 非singleton 也叫非单例模式(或者叫做 prototype,只是用在这里不是很合适) 当一个对象被定义为 singleton 时,容器中就只会有一个共享的实例,任何时候通过id或别名请求该对象都会返回这个共享实例的引用(也就是说这个对象只会被创建一次). 当使用 非singleton,或者说原型模式布署时,每次请求对象都会创建新的实例…
在 Spring.Net 中对象初始化的方式分为两种: ① 急切实例化,也就是说 Spring.Net 容器初始化的时候将对象先实例化出来. ② 延迟实例化,也就是说我们在调用 GetObject 方法时才实例化该对象. Spring.Net 默认使用的 急切实例化 ( lazy-init=“false” ) 的方式来初始化对象.lazy-init=“false” 从字面上理解就是 ”不延迟实例化(急切实例化)“,而 lazy-init=“true” 就是 “延迟实例化”的意思. 只要是一个对象…
由于这几天都比较忙,所以对笔记暂时没有更新. Spring.NET具有自动装配的能力,也就是说,Spring.NET可以通过对象的定义自动分辨某个对象的协作对象.自动装配是针对单个对象(按:针对每个协作对象)进行的,所以可对某些对象启用自动装配而某些对象关闭自动装配(按:即自动装配某些协作对象,而不自动装配其它协作对象).使用自动装配可以减少甚至完全消除属性或参数值的设置工作. 上面是官方的定义,有点难懂,说白了就是,在使用大部分框架,包括Spring.Net 框架进行软件开发的过程中都有着复杂…
在前面章节有童鞋提到过 关于配置文件 Objects.xml 路径的相关问题,这些东西是 IResource 接口的一些内容,接下来就详细介绍一下 IResource 接口. IResource 接口 位于Spring.Core.IO 命名空间下,它能够使用统一的方式描述和访问不同类型的资源.通过该接口可以使用类似多态,与协议无关的方式来处理文件和URI资源.IResource 接口继承自 IInputStream 接口,后者只有一个属性: Stream InputStream , IResou…
我们在开发中,经常需要让对象了解自己所在的容器的信息,例如,有时我们需要让对象知道,对象所在容器的引用是什么,或者是对象在容器中的名称是什么 .Spring.Net 中提供了两个接口,我们使用这两个接口可以让对象了解自己的容器. 一 . IObjectFactoryAware 接口 实现了 Spring.Objects.Factory.IObjectFactoryAware 接口 的对象可以在被容器创建后获取它所在容器的引用.该接口只有一个(只写的)属性: IObjectFactory Obje…
Spring.Net 一直讲求 ” 配置应用程序“,有一种需求在实际开发中不太常用,却非常有用 -> 配置对象的行为,Spring.Net 也能够完美的实现.Spring.Net 通过几个专门的接口来控制容器中对象的行为.比如说,我们可以自定义对象初始化行为,自定义对象销毁行为,抽象对象定义和子对象定义等.在下面会介绍常用的几中 自定义对象行为: ① 自定义对象初始化行为 ② 自定义对象销毁行为 ③ 抽象对象定义 ④ 子对象定义 ⑤ IObjectPostProcessor及扩展类(对象后处理器…
官方取名叫 对象后处理器 (object post-processor) , 听起来很高级的样子啊!实际上就是所有实现了这个接口的类,增加了两个方法. Spring.Objects.Factory.Config.IObjectPostProcessor 接口,该接口包括两个方法: //在每个对象的初始化方法被调用之前调用 object PostProcessBeforeInitialization(object instance, string name); //在对象的初始化方法返回之后调用…