上一页 1 ··· 6 7 8 9 10 11 12 13 14 ··· 19 下一页
摘要: 多数用户都会将容器中的大部分对象布署为singleton模式。当一个singleton对象需要和另一个singleton对象协作,或者一个非singleton对象需要和另一个非singleson对象协作时,Spring.NET都能很好的处理它们的依赖关系。但是,如果对象的生存周期不同,就可能会产生问题。例如,假设一个singleton对象A要使用一个非singleton(原型)对象B,A中的每个方法都会用到B的新实例。由于A是singleton对象,容器只有会创建它一次,也就是说只有一次给A的属性赋值的机会,所以不可能在每次A需要的时候都给它注入一个新的B。有一种解决的办法有点违背控制反转原则 阅读全文
posted @ 2011-03-26 20:57 似水流年-johnhuo 阅读(164) 评论(0) 推荐(0) 编辑
摘要: 我们在第三篇中学习里一个简易的IoC框架。今天我们接着上次的程序,实现带参数构造函数对象的实例和属性的注入 。 我们知道可以通过反射获取类的构造函数及参数(GetConstructors方法);可以获取属性和属性的类型(GetProperties方法)。通过Activator的CreateInstance(Type type, params object[] args)方法可以创建带参数构造函数的实例。通过SetValue方法可以给属性赋值,这样一来,我们就上次的代码稍加改造就可以实现属性的注入了。 下面是完成的代码:Domain public class Person { public st 阅读全文
posted @ 2011-03-26 20:55 似水流年-johnhuo 阅读(184) 评论(0) 推荐(0) 编辑
摘要: 一、属性注入 上篇我们简单提到依赖注入的用途。回顾一下所讲内容,发现在object节点下使用了<property name="Tool" ref="computer"/>。而property 标签正是用来属性注入的。而ref是用来标识是关联到哪个object。而name属性是指属性名。如下: <object id="modernPerson" type="SpringNetIoC.ModernPerson, SpringNetIoC"> <property name="Too 阅读全文
posted @ 2011-03-26 20:53 似水流年-johnhuo 阅读(159) 评论(0) 推荐(0) 编辑
摘要: 谈到高级语言编程,我们就会联想到设计模式;谈到设计模式,我们就会说道怎么样解耦合。而Spring.NET的IoC容器其中的一种用途就是解耦合,其最经典的应用就是:依赖注入(Dependeny Injection)简称DI,目前DI是最优秀的解耦方式之一。下面我就来谈谈依赖注入的应用场景。 我模拟了三种不同的场景,可以一起学习使用依赖注入的重要性。 下面是应用场景的条件:人类使用工具劳动。 /**//// <summary> /// 抽象人类 /// </summary> public abstract class Person { /**//// <summary 阅读全文
posted @ 2011-03-26 20:51 似水流年-johnhuo 阅读(230) 评论(0) 推荐(0) 编辑
摘要: 一、属性注入 上篇我们简单提到依赖注入的用途。回顾一下所讲内容,发现在object节点下使用了<property name="Tool" ref="computer"/>。而property 标签正是用来属性注入的。而ref是用来标识是关联到哪个object。而name属性是指属性名。如下: <object id="modernPerson" type="SpringNetIoC.ModernPerson, SpringNetIoC"> <property name="Too 阅读全文
posted @ 2011-03-26 20:49 似水流年-johnhuo 阅读(194) 评论(0) 推荐(0) 编辑
摘要: 学过了前面的课程,我们来一起学习Spring.NET的IoC容器对象的创建。 创建对象一般有3种方式:1.构造器创建,2.静态工厂创建,3.实例工厂创建 多数情况下,容器会根据对象定义中的type属性值去直接调用相应类型的某个构造器。另外,容器也可以调用工厂方法来创建对象,这时type属性的值就应该是包含工厂方法的类型(按:而不是要创建的类型,但通过该对象定义的名称获取的则是由工厂方法所创建的对象)。工厂方法的产品对象可以是工厂方法所在的类型,也可以是其它类型(按:很多情况下工厂方法位于单独的类型中),这无关紧要。(摘自Spring.NET中文手册) 一、通过构造器创建对象通过构造器创建对象需 阅读全文
posted @ 2011-03-26 20:45 似水流年-johnhuo 阅读(178) 评论(0) 推荐(0) 编辑
摘要: 讲了这么多理论,我们来手动实现一个简易的IoC框架的,这样可以加深IoC的理论知识。 一、思路在我们使用Spring.NET框架的时候,首先需要实例化Spring.NET容器, 然后调用IoC容器IObjectFactory接口中GetObject方法获取容器中的对象。通过这一点就可以告诉我们制作IoC容器需要写一个获取 XML文件内容的方法和申明一个Dictionary<string, object>来存放IoC容器中的对象,还需要写一个能从Dictionary<string, object>中获取对象的方法。 二、分析要获取XML文件的内容,在3.5的语法中,我自然 阅读全文
posted @ 2011-03-26 20:43 似水流年-johnhuo 阅读(269) 评论(1) 推荐(0) 编辑
摘要: 我们先来一起学习一下怎样使用Spring.NET。一、环境下载及安装 到Spring的官方网站下载Spring.NET框架的安装文件(Spring.NET-1.3.0-RC1.exe)。目前Spring.NET最新的版本是1.3。下载并解压后就可以了。我们使用Spring.NET框架经常用到的一下几个文件:Common.Logging.dll(必要)Spring.Core.dll(必要)Spring.Data.dllSpring.Aop.dll(可选)Spring.Data.NHibernate21.dllSpring.Web.dll在以后的博客里我们会学习一些与NHibernate和Asp. 阅读全文
posted @ 2011-03-26 20:31 似水流年-johnhuo 阅读(252) 评论(0) 推荐(0) 编辑
摘要: 在学习Spring.NET这个控制反转(IoC)和面向切面(AOP)的容器框架之前,我们先来看一下什么是控制反转(IoC)。 控制反转(Inversion of Control,英文缩写为IoC),也叫依赖注入(Dependency Injection)。我个人认为控制反转的意思是依赖对象发生改变,由最初的类本身来管理依赖对象改变为IoC框架来管理这些对象,使得依赖脱离类本身的控制,从而实现松耦合。我们先来看一段代码 namespace Dao{ public interface IPersonDao { void Save(); } public class PersonDao : IPer 阅读全文
posted @ 2011-03-26 20:19 似水流年-johnhuo 阅读(226) 评论(0) 推荐(0) 编辑
摘要: 在 Asp.net MVC 2 中解决页面提交数据并发问题 通过本篇,你能了解到 Asp.net MVC 模型绑定处理过程,一种解决并发颗粒度到一条数据的方法. * 如何解决互联网中某条数据的并发问题 在一个页面提交数据库前把从数据库取出的数据和提交时数据库中的数据比较,不同则给出提示. 在和其他童鞋的讨论中,都明确的指出了采用HashCode的方案,HashCode作为区分对象不同的一种方案,确实可行,但也有反对的声音.采用HashCode难免会涉及到对于实体对象的HashCode生成的问题,而实体对象的Hash又是根据自身属性生成,而属性又包含了其他关系,这种连带作用十分可观,也想过采用对 阅读全文
posted @ 2011-03-26 20:13 似水流年-johnhuo 阅读(360) 评论(0) 推荐(0) 编辑
上一页 1 ··· 6 7 8 9 10 11 12 13 14 ··· 19 下一页