第11章Spring_第1页
第11章Spring_第2页
第11章Spring_第3页
第11章Spring_第4页
第11章Spring_第5页
已阅读5页,还剩41页未读 继续免费阅读

下载本文档

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

文档简介

1、South China University of TechnologyChapter 11. Spring 提提 纲纲 Spring 框架介绍框架介绍 Spring核心概念:IOC 和DI 基于IOC的松耦合JavaEE分层设计 Spring框架体系结构Spring 框架的历史框架的历史 Rod Johnson . Expert One-on-One J2EE Design and Development. 2002.11. Rod Johnson . Expert One on one J2EE Development Without EJB. 2004.7. http:/projects

2、.spring.io/spring-framework/ Spring特点 IOC (反向控制):Spring提倡使用IOC来实现松耦合,使用IOC对象是被动接收依赖类而不是主动去找。 AOP (面向切面):Spring对面向切面的编程提供了强大的支持,例如可以将系统的事务,日志从业务代码中分离出来。 轻量级轻量级:非侵入式,框架更小,性能高。 对象容器对象容器:Spring是一个容器,它负责管理系统对象的生命周期和配置,例如你可以配置一个bean是产生一个实例还是每次请求都产生一个实例,它的容器相对于EJB容器更加简洁。 可扩展层次框架可扩展层次框架:Spring实现了使用简单的组件来配置组

3、装一个复杂的系统。Spring的特点的特点提提 纲纲 Spring 框架介绍 Spring核心概念:核心概念:IOC 和和DI 基于 IOC的松耦合JavaEE分层设计 Spring框架体系结构对象之间的依赖关系对象之间的依赖关系 对象依赖关系:就是一个对象B的变化会引起外一个对象A的变化,我们就说A对象依赖于B对象(A-B) 传统的直接调用new 进行对象实例化的方式导致强依赖关系,模块耦合程度高。 不方便测试、独立开发、升级。消除直接依赖消除直接依赖 的方法:的方法: IoC (1) IoC(Inversion of Control,控制反转): 使用框架来控制程序之间的依赖关系, 控制权

4、由原来的调用者转移到了框架。 由框架实现组合装配消除直接依赖消除直接依赖 的方法:的方法: IoC (2) 没有控制反转情况 消除直接依赖消除直接依赖 的方法:的方法: IoC (3) 控制反转情况 消除直接依赖消除直接依赖 的方法:的方法: IoC (4) “控制反转” 符合“好莱坞原则”: “Dont call me, Ill call you.” 控制反转将控制权倒置,从而使软件系统发生了具有可扩展性、可复用性等特性的飞跃 在Spring框架中所实现的IoC机制 ,也称为 “依赖注入”(DI,Dependency Injection) 框架起到对象容器的作用,负责搭配不同的对象组件进行使

5、用 DI的实现方式的实现方式 (1) Spring提供两种主要的DI实现方式: Setter(设值)注入方式 Constructor(构造器)注入方式Setter(设值)注入方式(设值)注入方式 调用者:DbHello 被调用者:DirectoryDAOImpapplicationContext.xml构造器注入方式构造器注入方式 调用者:DbHello 被调用者:DirectoryDAOImp applicationContext.xml提提 纲纲 Spring 框架介绍 Spring核心概念:IOC 和DI 基于基于IOC的松耦合的松耦合JavaEE分层设计分层设计 Spring框架体系结

6、构JAVAEE的分层设计的分层设计 - 四层架构四层架构松耦合软件系统的必要性松耦合软件系统的必要性 不能假定用户需求是不变的 只有肯定用户需求变化是永恒的这样原则,我们设计的软件系统才能满足用户不断变化需求 这就要求我们的软件系统应该具有很好的可扩展性和可复用性 手段: 降低层与层的耦合度即松耦合紧耦合的设计情况?紧耦合的设计情况? 持久层持久层服务层服务层表示层表示层紧耦合设计的缺点紧耦合设计的缺点 (1) 问题:由于层与层之间没有设计接口,而且层与层的依赖关系采用new方式等问题,当用户需求变更了就会引发“牵一发而动全身”可怕情形。 假如我们现在持久层DAO不使用JDBC技术而换成使用H

7、ibernateORM框架,添加一个DAO类即DictionaryDAOHibernateImp 会导致其他层的变动紧耦合设计的缺点紧耦合设计的缺点 (2) 紧耦合设计的缺点紧耦合设计的缺点 (3) 紧耦合设计的缺点紧耦合设计的缺点 (4) 小结小结 综上所述,上面的小例子我们看到,我们修改了数据持久层,结果导致了所有的层的变化,出现了“牵一发而动全身”可怕局面。这就是紧耦合的系统。 紧耦合系统给缺少可扩展性和可复用性,难以单元测试。不能满足用户不断变化的需求。 导致紧耦合原因: 层与层之间没有设计接口,上层调用者要关心下层实现; 层与层之间调用还是采用传统new的方式。Spring如何构建松

8、耦合的软件系统如何构建松耦合的软件系统 分层设计、并通过Spring解决如下问题: 层与层之间设计接口 由框架负责依赖注入基于基于Spring的实现的实现修改持久层实现修改持久层实现 变动:由于用户需求的变化持久层的DAO由原来使用JDBC实现换成使用Hibernate实现。 应对:我们只需要添加一个DictionaryDAOHibernateImp实现类,并修改配置文件就可以了,别的不需要任何的修改。结构图结构图DictionaryDAOHibernateImp总结总结 综上所述,使用了Spring构建的松耦合系统给我们带来的好处: 层间耦合性低 可扩展性更强,在用户需求变更的情况下只需要修

9、改少量代码就可以满足用户需求 。 提提 纲纲 Spring 框架介绍 Spring核心概念:IOC 和DI 基于IOC的松耦合JavaEE分层设计 Spring框架体系结构框架体系结构Spring既是容器也是框架既是容器也是框架 由由SpringSpring负责业务逻辑负责业务逻辑 对象的实例化、初始化对象的实例化、初始化、服务(被调用)等,这是、服务(被调用)等,这是SpringSpring作为作为容器容器的的职责职责 SpringSpring将大多数可重用、与业务逻辑无关的功将大多数可重用、与业务逻辑无关的功能能够自行或交由其他组件完成,这是它作为能能够自行或交由其他组件完成,这是它作为一

10、个一个框架框架的职责的职责Spring体系结构体系结构Spring与其它框架的不同与其它框架的不同 比如将比如将SpringSpring与与StrutsStruts框架,框架,HibernateHibernate框架相对框架相对比,他们的不同之处在于:比,他们的不同之处在于:SpringSpring还可以集成其它框架,它是一个还可以集成其它框架,它是一个“大大”框架框架SpringSpring是专注于企业应用的框架,它所涉及的领域是专注于企业应用的框架,它所涉及的领域非常之广泛非常之广泛StrutsStruts只是专注于实现只是专注于实现WebWeb应用程序开发的应用程序开发的MVCMVC部分

11、部分HibernateHibernate只是专注于数据持久层的部分只是专注于数据持久层的部分Servlet ASpring框架框架Spring可以集成可以集成Struts业务逻辑实现 A客户端客户端消息服务DBWebServiceLDAP日志事务处理异常处理Struts框架框架国际化验证处理请求参数Servlet ASpring框架框架Spring可以集成可以集成Hibernate业务逻辑实现 A客户端客户端消息服务DBWebServiceLDAP日志事务处理异常处理Struts框架框架国际化验证处理请求参数Hibernat框架框架Struts、Spring和和Hibernate 的整合的整合 SpringSpring是以简化是以简化J2EEJ2EE的应用开发为目标而诞生的,系统的应用开发为目标而诞

温馨提示

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

评论

0/150

提交评论