SpringNet框架技术PPT文档格式.ppt

上传人:b****1 文档编号:14326820 上传时间:2022-10-22 格式:PPT 页数:32 大小:623.50KB
下载 相关 举报
SpringNet框架技术PPT文档格式.ppt_第1页
第1页 / 共32页
SpringNet框架技术PPT文档格式.ppt_第2页
第2页 / 共32页
SpringNet框架技术PPT文档格式.ppt_第3页
第3页 / 共32页
SpringNet框架技术PPT文档格式.ppt_第4页
第4页 / 共32页
SpringNet框架技术PPT文档格式.ppt_第5页
第5页 / 共32页
点击查看更多>>
下载资源
资源描述

SpringNet框架技术PPT文档格式.ppt

《SpringNet框架技术PPT文档格式.ppt》由会员分享,可在线阅读,更多相关《SpringNet框架技术PPT文档格式.ppt(32页珍藏版)》请在冰豆网上搜索。

SpringNet框架技术PPT文档格式.ppt

3、IoC方法:

把耦合放入XML文件,通过容器这需要的时候把这个依赖关系形成;

可以看成是工厂模式的升华。

2、环境搭建,1、常用dll(注意dll的版本区分)Common.Logging.dll(必需)Spring.Core.dll(必需)Spring.AOP.dll2、配置文件的读取方式实际物理路径:

IResourceinput=newFileSystemResource(D:

Objects.xml);

IObjectFactoryfactory=newXmlObjectFactory(input);

程序集下读取文件:

stringxmlFiles=newstringfile:

/文件名,assembly:

/程序集名/命名空名/文件名,;

IApplicationContextcontext=newXmlApplicationContext(xmlFiles);

3、实现一个简易的Ioc框架,本节通过手动实现一个简易的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需创建对象的配置定义不能包含type属性例:

4、泛型类型的创建泛型类型可采用上面3中任一方式创建,只是type属性的设置需注意:

左尖括号-,SprintTest/,5、容器中对象的作用域

(1),1、容器对象的部署(2种)1.1singleton(框架默认)容器中只会有一个共享的实例,该对象只会被创建一次。

例:

1.2非singleton每次请求,容器都会创建一个新的实例;

当脱离调用方法的作用域后,该对象会被容器自动销毁。

5、容器中对象的作用域

(2),2、实例化延迟(lazy-init)作用:

当容器初始化时进行对象实例化(框架默认),还是在调用GetObject方法时才进行对象实例化。

注:

设置为lazy-init=true时应用程序启动会快一点,但在启动的时不能够检测错误,如果在调用的时候一旦发生错误,后果是不堪设想的;

需要在搭建应用时考虑。

6、依赖注入(DI),IoC容器的一种用途就是解耦合,其中最经典的就是:

依赖注入(DependenyInjection)简称DI,目前DI是最优秀的解耦方式之一。

1、里氏替换原则(LSP)LSP:

子类必须能够替换掉它们的基类。

缺点:

但在子类的实现中还是会存在一些耦合。

2、经典的工厂模式子类仅仅对工厂耦合,而不和具体实现耦合。

3、IoC容器子类不需要知道任何具体的实现,仅仅是机械化的工作。

至于使用什么具体的实现,则由配置文件决定,所有对象都交由容器管理,实现了动态的拆装组建和组件重用。

7、依赖对象的注入,1、属性注入注入类型:

值类型、引用类型、内联类型例:

2、构造函数注入构造函数注入使用constructor-arg标签,可使用value和ref注入属性。

8、集合类型的注入,1、IList类型标签名:

listelement-type属性:

表示泛型T的类型value子标签:

注入集合中元素的值ref子标签:

注入集合中元素关联的对象2、IDictionary类型标签名:

dictionarykey-type和value-type属性:

表示泛型IDictionaryentry子标签:

表示IDictionary集合的元素key属性:

元素的键value属性:

元素的值value-ref属性:

元素值所关联的对象注:

集合为空时,用元素表示,9、打造一个简易的依赖注入框架,比较“简易的IoC框架”,实现了带构造函数对象的实例和属性注入。

大家可以通过本案例,学习反射获取类的构造函数及参数、属性和属性的类型,以及创建类的实例和给属性赋值。

10、方法注入,解决对象生命周期不同,可能产生的问题。

1、查询方法注入容器可以动态覆盖对象的抽象或虚方法,并在容器内查找已命名的对象;

开发时可以不用实现抽象方法,通过配置文件动态切换组件。

使用lookup-method节点进行配置例:

2、替换任意方法具体作用我也不是太清楚,大家自己研究吧。

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属性来指明继承关系,不是真正的继承。

仅仅从父对象定义中继承配置数据,减少键入工作。

第二阶段:

面向切面编程AOP,12、面向切面编程13、AOP概念14、AOP的通知类型15、AOP的配置,12、面向切面编程,AOP即面向切面编程,通过预编译方式和运行期动态代理实现给程序统一添加功能的技术;

它将程序分解为一系列方面(aspects)和关注点(concerns),通过分离应用的业务逻辑和系统级服务进行内聚性的开发;

应用对象只关心业务逻辑的实现,而不负责其它系统级关注点,如日志、事务支持等。

3中实现方式比较:

1、直接调用耦合性太强2、代理模式解除了耦合性,但增加了代码量,实现较麻烦。

3、容器AOP实际是利用System.Reflection.Emit命名空间下的类中运行时动态创建IL代码来实现AOP代理;

使得代理非常高效,实现简单。

13、AOP概念,思考点:

要对哪些方法拦截,拦截后又要做哪些处理?

基础术语:

Aspect(切面):

横切性关注点的抽象即为切面,程序里的切面就是对IMethodInterceptor接口的实现部分;

joinpoint(连接点):

由于Spring.Net仅支持方法连接点,程序里的连接点就是要拦截的方法;

Pointcut(切入点):

指要对哪些连接点进行拦截的定义,程序可以通过IMethodInvocation接口的Method来判断拦截哪些方法;

Advice(通知):

指拦截到连接点后所要做的事情,分为:

前置通知、后置通知、异常通知、环绕通知;

Target(目标对象):

要代理的目标对象;

AOP代理:

有AOP框架在将通知应用于目标对象后创建,程序里通过GetProxy()方法创建出代理对象;

Weave(织入):

指将切面应用到目标对象并导致代理对象被创建的过程;

Introduction(引入):

指在不修改代码的前提下,在运行期为类动态的添加一些方法和字段。

14、AOP的通知类型,共享:

基于类的通知(per-class)独占:

基于实例的通知(per-instance)1、环绕通知:

通过Proceed方法的调用,依次调用拦截器链上的其它拦截器。

2、前置通知:

在Proceed方法调用前的通知。

3、后置通知:

在Proceed方法调用后的通知;

如果通知抛出异常,就会沿拦截器链向上抛出,从而中断拦截器链的继续执行。

4、异常通知:

在Proceed方法调用发生异常的通知,15、AOP的配置,ProxyFactoryObject显示创建AOP代理方法会造成配置文件庞大,Spring.Net提供了自动代理功能,可根据条件自动创建代理对象。

1、对象名称切入点:

通过ObjectNameAutoProxyCreator类使用特定的文本值或通配符匹配目标对象的名称,进行代理对象的创建;

如果同时要进行方法的筛选,可使用NameMatchMethodPointcutAdvisor类型。

2、正则表达式切入点:

通过RegularExpressionMethodPointcutAdvisor和SdkRegularExpressionMethodPointcut类在类级上自动进行代理对象的创建,而不用包含特定的对象名,避免了配置文件的臃肿。

3、属性切入点:

通过AttributeMatchMethodPointcutAdvisor类拦截标注带有特定属性的类中的方法。

第三阶段:

事务和集成,16、事务管理17、事务传播行为18、集成IBatis.Net19、集成ASP.NETMVC,16、事务管理,ProxyFactoryObject显示创建AOP代理方法会造成配置文件庞大,Spring.Net提供了自动代理功能,可根据条件自动创建代理对象。

17、事务传播行为,通过TransactionProxyFactoryObject使用声明式事务。

7种类型的事务传播行为:

18、集成IBatis.Net,主要目的是为了说明这两个框架之间如何进行集成(IoC),范例省略了接口的定义,也未实现AOP的支持。

具体实现见范例Step18。

19、集成ASP.NETMVC,ASP.NETMVCFramework是微软官方提供的MVC模式编写ASP.NETWeb应用程序的一个框架,今天带给大家的就是ASP.NETMVC和Sprint.Net的组合。

具体实现见范例Step19。

第四阶段:

扩展集成,20、整合WebService21、整合WCF22、整合Quartz.Net23、整合NVelocity,20、整合WebService,虽然目前.NET对WebService支持得非常好,Spring.Net认为还是有几个方面可以改进:

1、.NET在.asmx文件中保存WebService请求和服务对象的关联关系,这些.asmx文件不管有用没用都得放在那儿。

2、Spring.Net希望能通过IoC容器对WebService进行依赖注入。

一般说来WebService总会依赖其它服务对象,如果能用配置方式来选择服务对象,这个功能就相当

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 法律文书 > 调解书

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1