认识Spring.ppt_第1页
认识Spring.ppt_第2页
认识Spring.ppt_第3页
认识Spring.ppt_第4页
认识Spring.ppt_第5页
已阅读5页,还剩20页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、知道Spring,个人资料,Spring的核心是轻量级(Lightweight )的容器,是实现IoC(InversionofControl )容器、非侵入性(Nointrusive )的框架,AOP (aspect 支持持久性、事务性、实现MVCWeb框架并为一般的企业服务应用接口(API )提供一致的模型包的全面应用程序f,以提供以下概念为各种现有框架(Struts、JSF、Hibernate等)提供了Spring集成方案。 此外,对于一些重量级容器(例如,EJB容器),轻量、轻量的表示方式使得Spring核心包的文件容量小于1MB,使用Spring核心包所需的资源负担小,在小型设备上s

2、另外,非侵入式框架的原本目的是提供一种框架,使开发者能够根据该框架快速开发遵循该框架所需的应用程序。 然而,当使用该框架时,应用程序可能依赖于该框架。 例如,如果大量使用该框架的API,或者直接继承某些类型的API,那么应用组件就不能独立于该框架了。 Spring的目标之一是几乎让应用感觉不到框架的存在,减轻了框架移植时的应用的负担,进一步提高应用组件的重用性。 “容器”(Container )和“Spring”提供了容器功能,其中容器可以管理对象的生命周期以及对象与对象之间的依赖关系。 可以使用一个配置文件(通常是XML )来定义对象的名称、生成方法(Prototype方法或Singleto

3、n方法)、需要设置生成哪些对象后成为对象的属性等。 启动容器后,所有的对象都可以直接使用,不需要编写一行程序代码来生成对象,也不需要建立对象和对象之间的依赖关系。 容器是由Java创建的程序,现在需要自己创建程序来管理对象关系,并自动创建容器。 IoC(InversionofControl )、Spring最重要的核心概念是InversionofControl,中文总是“控制逆转”,更具体的名词是DependencyInjection,中文总是“依赖注入”的Spring 不需要在程序代码中维持对象的依赖关系,只需在配置文件中设置,Spring核心容器就会根据配置自动依赖于指定的对象。 另外,A

4、OP(Aspect-orientedprogramming :专用程序设计)、Spring是最受重视的,而AOP(Aspect-orientedprogramming :专用程序设计)的实现却是由Spring支持的子帧Spring的IoC容器功能和AOP功能的实现是其重点,Spring下实现了持久层、MVCWeb框架和各种企业服务的API包,它们的实现依赖于Spring的IoC容器和AOP功能, Spring的这些子框架和包的API功能可以彼此独立,也可以与其他框架方案组合,Spring想提供一个一停止shop框架集成方案。 持久层、Spring提供持久层的集成,例如封装JDBC的使用,提供事

5、务(Transaction )管理功能,Spring为o/r映射工具(Hibernate,iBATIS )的集成提供了解决方案。 Web框架、Spring也提供了MVCWeb框架的解决方案。 使用SpringWeb框架的优点是,利用IoC和AOP的功能,可以轻松地替换各种View层技术,如JSP、Tiles的组合,以及使用PDF作为向用户展示的画面技术等。 可以将众所周知的Web框架(如Struts、JSF )与Spring集成,也可以与Spring集成,以应用于当前应用程序。对于其他企业服务的封装、JNDI、Mail、调度和远程等服务,Spring不是直接提供实现,而是通过将服务封装在抽象层

6、来将这些服务反向控制(InversionofControl ),Spring的核心概念是IoC,IoC的抽象概念是“依存关系的迁移”,迁移对于过去不良的应用程序设计,例如“上位模块不应该依赖于下位模块,模块必须依赖于抽象“实现必须依赖于抽象,抽象必须依赖于实现”也是IoC的表示,“应用程序不应该依赖于容器,容器服务于应用程序”也是IoC的表示。 另外,控制反转,简单来说,上层的抽象模块不依赖于下层的实现模块,并且通常是与业务逻辑相关联的模块。 例如,低级模块是与硬件相关的软盘访问设计,高级模块是磁盘备份的程序要求,并且当高级模块直接执行低级模块的函数时,这些模块与低级模块具有依赖性。 如果以面

7、向对象的方式设计控制反转,那么依赖反转的解释被解释为“程序不依赖于实现,而依赖于抽象接口”。 但是,不能直接重复使用商务舱或控制翻转。 您可以首先定义IDeviceWriter界面,并控制翻转和翻转。 如果应用程序需要Floppy存储,则Businessbusiness=newBusiness (); business.setdevicewriter (newfloppywriter (); business.save (); 同样,如果应用程序需要USB磁盘存储,则Businessbusiness=newBusiness (); business.setdevicewriter (newus

8、bdiskwriter (); business.save (); 另外,控制反转(InversionofControl ),IoC的控制是控制的意思,实际上背后的意思也是依存关系的转移,a依存于b,则该意思是b具有控制权,想转移该关系,所以依存关系的反转是控制从实现控制权的一方转移到抽象的一方,薯使抽象的一方具有控制权,可以重用组件,在上述的Java程序中,整个控件从实际的loppyWriter转移到抽象的IDeviceWriter界面, Business依赖于IDeviceWriter界面,软盘写入器、USB磁盘写入器也依赖于IDeviceWriter界面。控制反转(Inversionof

9、Control )、程序的业务逻辑部分必须设计成可再利用,不受所使用的框架和容器的影响,所以将来将整个应用程序的业务逻辑转移到其他框架和容器中IoC是容器的角度,可以用好莱坞的名言表示为“Dontcallme,Illcallyou .”。 按程序术语来说,“容器不需要必要的(对象)资源,容器会自动将这些对象交给你”,依赖注入,要实现IoC,需要依赖注入依赖注入的意思是“保持抽象接口,使组件依赖于抽象接口,如果组件与其他实际对象具有依赖关系,则通过抽象接口注入依赖的实际对象”。 委托注入在MartinFowler的文章中,叙述了接口注入、setter注入、结构注入三种实现方法。 分别称为类型1

10、IOC、类型2 IOC、类型3 IOC。依赖注入(DependencyInjection )实现上文所述的business type2IOC,经由配置器(即,setXXX方法)注入依赖的对象,与此相对,Type3IoC根据构筑式注入依赖关系。 例如,publicclassbusinessobject 私有edevicewriterwiter; publicbusinesssobject (idevicewriterwriter ) this.writer=writer; publicvoidseave () writer.savetoddevice (); 、依赖注入(DependencyIn

11、jection )、Spring建议使用设定器injection(type2ioc ),但也可以使用设定器或Constructor完成依赖注入。 使用构造函数来注入依赖对象的一个优点是可以在构造函数的同时完成依赖关系的建立,但是在建立的对象关系多的情况下,需要在构造函数中声明参数长的列,使用配置方法来注入依赖关系setXXX ()的名称比存储和查询由构造函数上的参数位置表示的对象更好,因为setXXX的方法具有明确的方法名称,用于理解注入对象的作用和类型。 Type1、Type1IoC是接口注入,使用Type1IoC时需要执行接口,对象的容器也使用该接口,容器知道接口中规定的方法,所以, 可以

12、调用实现接口的对象来完成依赖关系的注入,例如,在容器的API中使用idependency:publicinteraceidependency publicovidcreatedependency (mapdependob ,使Type1、Business类实现IDependency接口: publicclassusinessimplementidependency privateemapdependobjects; /记录依赖对象的publicvoidcreateddependency (mapdependobjects ) this.depend object=depend objects;

13、 /在这里实现与业务的依存关系. 2222222222222222222226 要完成注入了依存关系的对象,必须实施IDependency接口并将其放在容器中进行管理。 容器通过对受管理对象执行createDependency ()方法来完成依赖关系的建立。 另外,由于Business要求实现容器中界定的接口,所以Type1、Type1IoC依赖于容器的API。 将来,在Business打算从当前容器脱离到另一容器或帧的情况下,应修改过程。 在这种实现方法中,以更复杂的依赖性生成更复杂的接口,组件和容器(帧)之间的依赖性变得更复杂,最后组件不能从容器脱离。 因此,Type1IoC对应用程序和组件具有很强的入侵性,如果

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论