Spring.Net框架技术.ppt
《Spring.Net框架技术.ppt》由会员分享,可在线阅读,更多相关《Spring.Net框架技术.ppt(32页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、Spring.Net框架技术2012-2-13引用资料:http:/ of Control,英文缩写为IoC),也叫依赖注入(Dependency Injection)。控制反转的意思是依赖对象(控制权)发生转变,由最初的类本身来管理依赖对象转变为IoC框架来管理这些对象,使得依赖脱离类本身的控制,从而实现松耦合。3种实现方式比较:1、一般方法:对象间直接耦合;2、工厂方法:对象间通过工厂耦合;3、IoC方法:把耦合放入XML文件,通过容器这需要的时候把这个依赖关系形成;可以看成是工厂模式的升华。2、环境搭建1、常用dll(注意dll的版本区分)Common.Logging.dll(必需)Sp
2、ring.Core.dll(必需)Spring.AOP.dll 2、配置文件的读取方式 实际物理路径:IResourceinput=newFileSystemResource(D:Objects.xml);IObjectFactoryfactory=newXmlObjectFactory(input);程序集下读取文件:stringxmlFiles=newstringfile:/文件名,assembly:/程序集名/命名空名/文件名,;IApplicationContextcontext=newXmlApplicationContext(xmlFiles);3、实现一个简易的Ioc框架本节通过
3、手动实现一个简易的IoC框架的,来加深IoC的理论知识。4、对象的创建(1)一般有3种方式:构造器、静态工厂、实例工厂1、构造器 需满足的条件:1.1 指明对象类型:type=“类全名,程序集名”或使用强命名 1.2 有一个无参的构造函数或者默认构造函数(可以带参数)例:2、静态工厂 创建一个静态工厂方法,并配置factory-method属性 例:3、实例工厂 需满足的条件:3.1 创建一个实例工厂类,并配置factory-method和factory-object属性 3.2 实例工厂方法所在的对象必须配置在同一容器(或父容器)中4、对象的创建(2)3.3 需创建对象的配置定义不能包含ty
4、pe属性 例:4、泛型类型的创建 泛型类型可采用上面3中任一方式创建,只是type属性的设置需注意:左尖括号要替换为<。例:!-泛型类型genericClass-,SprintTest/5、容器中对象的作用域(1)1、容器对象的部署(2种)1.1 singleton(框架默认)容器中只会有一个共享的实例,该对象只会被创建一次。例:1.2 非singleton 每次请求,容器都会创建一个新的实例;当脱离调用方法的作用域后,该对象会被容器自动销毁。例:5、容器中对象的作用域(2)2、实例化延迟(lazy-init)作用:当容器初始化时进行对象实例化(框架默认),还是在调用GetObject方
5、法时才进行对象实例化。例:注:设置为lazy-init=true时应用程序启动会快一点,但在启动的时不能够检测错误,如果在调用的时候一旦发生错误,后果是不堪设想的;需要在搭建应用时考虑。6、依赖注入(DI)IoC容器的一种用途就是解耦合,其中最经典的就是:依赖注入(Dependeny Injection)简称DI,目前DI是最优秀的解耦方式之一。1、里氏替换原则(LSP)LSP:子类必须能够替换掉它们的基类。缺点:但在子类的实现中还是会存在一些耦合。2、经典的工厂模式 子类仅仅对工厂耦合,而不和具体实现耦合。3、IoC容器 子类不需要知道任何具体的实现,仅仅是机械化的工作。至于使用什么具体的实
6、现,则由配置文件决定,所有对象都交由容器管理,实现了动态的拆装组建和组件重用。7、依赖对象的注入1、属性注入 注入类型:值类型、引用类型、内联类型 例:2、构造函数注入 构造函数注入使用constructor-arg标签,可使用value和ref注入属性。例:8、集合类型的注入1、IList类型 标签名:list element-type属性:表示泛型T的类型 value 子标签:注入集合中元素的值 ref 子标签:注入集合中元素关联的对象2、IDictionary类型 标签名:dictionary key-type和value-type属性:表示泛型IDictionary entry子标签:
7、表示IDictionary集合的元素 key 属性:元素的键 value 属性:元素的值 value-ref属性:元素值所关联的对象注:集合为空时,用元素表示9、打造一个简易的依赖注入框架 比较“简易的IoC框架”,实现了带构造函数对象的实例和属性注入。大家可以通过本案例,学习反射获取类的构造函数及参数、属性和属性的类型,以及创建类的实例和给属性赋值。10、方法注入解决对象生命周期不同,可能产生的问题。1、查询方法注入 容器可以动态覆盖对象的抽象或虚方法,并在容器内查找已命名的对象;开发时可以不用实现抽象方法,通过配置文件动态切换组件。使用lookup-method节点进行配置 例:2、替换任
8、意方法 具体作用我也不是太清楚,大家自己研究吧。例:3、事件注入 在listener节点处配置event和method属性指明事件名和绑定的方法,并增加ref节点设置object属性来指明调用哪个IoC容器对象。例:11、自定义对象行为1、生命周期接口 1.1 初始化 继承Spring.Objects.Factory.IInitializingObject接口或配置init-method属性 1.2 销毁 继承System.IDisposable接口或配置destroy-method属性 例:2、抽象对象和子对象定义 设置parent属性来指明继承关系,不是真正的继承。仅仅从父对象定义中继承配
9、置数据,减少键入工作。例:第二阶段:面向切面编程AOP12、面向切面编程13、AOP概念14、AOP的通知类型15、AOP的配置12、面向切面编程 AOP即面向切面编程,通过预编译方式和运行期动态代理实现给程序统一添加功能的技术;它将程序分解为一系列方面(aspects)和关注点(concerns),通过分离应用的业务逻辑和系统级服务进行内聚性的开发;应用对象只关心业务逻辑的实现,而不负责其它系统级关注点,如日志、事务支持等。3中实现方式比较:1、直接调用 耦合性太强2、代理模式 解除了耦合性,但增加了代码量,实现较麻烦。3、容器AOP 实际是利用System.Reflection.Emit命
10、名空间下的类中运行时动态创建IL代码来实现AOP代理;使得代理非常高效,实现简单。13、AOP概念思考点:要对哪些方法拦截,拦截后又要做哪些处理?基础术语:Aspect(切面):横切性关注点的抽象即为切面,程序里的切面就是对IMethodInterceptor接口的实现部分;joinpoint(连接点):由于Spring.Net仅支持方法连接点,程序里的连接点就是要拦截的方法;Pointcut(切入点):指要对哪些连接点进行拦截的定义,程序可以通过IMethodInvocation接口的Method来判断拦截哪些方法;Advice(通知):指拦截到连接点后所要做的事情,分为:前置通知、后置通知
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- Spring Net 框架 技术
限制150内