第1章Spring框架概述课件_第1页
第1章Spring框架概述课件_第2页
第1章Spring框架概述课件_第3页
第1章Spring框架概述课件_第4页
第1章Spring框架概述课件_第5页
已阅读5页,还剩32页未读 继续免费阅读

下载本文档

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

文档简介

Spring框架高级开发工程师培训中程在线(北京)内部教程注意保密第1章Spring框架概述学习内容Spring框架的历史Spring框架是介绍第一个Spring实例IoC和DI概念DI的类型Spring框架的历史2002年11月一本名为《ExpertOne-on-OneJ2EEDesignandDevelopment》2004年7月RodJohnson又出版了另外一本名为《ExpertOneononeJ2EEDevelopmentWithoutEJB》Spring框架是什么?Spring框架给我们带来什么?IoC和DI,Spring通过IoC(控制反转)和DI(依赖注入)真正实现了面向接口的编程,使我们能够构建松耦合的J2EE企业级系统。灵活可选择,Spring不是一个强制性框架,你可以使用它的一部分也可以使用的全部。你也可以只使用它的AOP部分管理应用系统的事务,也可以只使用它MVC框架。SpringWebMVC框架,Spring提供的WebMVC框架是一个非常优秀的WebMVC框架,它即能够使用传统的JSP、HTML等作为视图技术,也可以使用PDF和Excel作为视图技术,这样我们就可以实现Web报表的功能。Spring框架给我们带来什么?测试驱动,Spring测试驱动模式的开发,什么是测试驱动呢?简单的说测试驱动就是,在编写某个被测试程序之前先编写测试程序,用测试程序测试目标程序,直到最后测试用例全部通过为止。这种编程方式将成为主流。灵活的事务支持,Spring提供了安全和灵活的事务支持,它即有编程型事务的支持又有声明型事务的支持。这里的声明型事务的支持是借助AOP实现的。消除各式各样的配置文件,Spring提供了统一格式的配置文件,消除了一个框架一种形式的配置文件问题,如Spring在整合Hibernate后就不再使用Hibernate的配置文件(Hibenate.cfg.xml或这是Hperties)Spring的第一次亲密接触准备工作建立工程程序描述测试程序小结准备工作到spring官方站点下载spring框架我们会看到两个压缩文件:spring-framework-2.x.zip和spring-framework-2.x-with-dependencies.zip建立工程我们要在Eclipse中为第一个程序创建一个工程,这个工程名“FirstSpring”,它是一个普通的Java工程。添加Spring框架类库。程序描述HelloWorld为例,现在我们要做一个Hello类,有一个方法是sayHello方法的返回值是一个字符串测试程序没有使用Spring的JUnit4单元测试有使用Spring的JUnit4单元测试没有使用Spring的JUnit4单元测试使用Spring的JUnit4单元测试applicationContext.xml小结测试程序中将获得Hello实例的方式由原来的hello=newHello()的方法修改成为hello=(Hello)bf.getBean(“myhello”)。Spring使用一个BeanFactory类获得Hello实例,BeanFactory类的子类ClassPathXmlApplicationContext可以使Spring以类路径的方式访问它的applicationContext.xml文件,获得hello这个Bean注册信息<beanid=“myhello”class=“com.tongking.spring.Hello”/>,创建这个Bean的实例。什么IoC和DIDI概念IoC概念案例回顾设计一个接口Hello,它有一个sayHello方法这个代码如清单1.7所示。Hello接口的两个实现类即EnglishHello和ChineseHello。EnglishHello的sayHello方法是实现英文问候(“HelloWorld”)代码如清单1.8所示,ChineseHello的sayHello方法是实现中文问候(“世界你好”)代码如清单1.9所示。测试为了测试EnglishHello和ChineseHello两个实现类。如果先测试的是EnglishHello这个类,修改Bean注册applicationContext.xml文件,class的类型是com.tongking.spring.EnglishHello。在我们的JUnit单元测试程序HelloTest中我们不需要修改什么,如果我们的测试需求变了改成要测试ChineseHello这个类,我们只需要将applicationContext.xml文件中的Bean依赖关系修改成ChineseHello就可以了。案例总结原本HelloTest测试类依赖于EnglishHello对象如图1.25,现在依赖于ChineseHello对象了如图1.26所示。什么是依赖关系?在OOAD的理论中对象之间有一种关系叫依赖关系。依赖关系就是一个对象B的变化会引起外一个对象A的变化,我们就说A对象依赖于B对象(A->B)。如图1.27所示。依赖关系在OOAD里是普遍存在的。实例化对象方式Spring的方式和new方式。Spring的方式创建一个Bean实例,可以轻松的改变对象之间的依赖关系newHello()方式不能轻松的修改依赖关系,我们必须修改测试代码由hello=newEnglishHello()改为hello=newChineseHello()。new的方式建立依赖关系是在编程时期建立的,而Spring方式是在运行期由Spring的BeanFactory从文件applicationContext.xml读取依赖关系的,并动态实例化的。或者说依赖关系动态的由BeanFactory读取applicationContext.xml文件注入进来的——这就是DI(DependencyInjection),我们翻译为“依赖注入”。接下来我们介绍什么是DI(“依赖注入”)。DI概念DI是DependencyInjection缩写,我们翻译为“依赖注入”。简单的说,两个对象A->B(或者组件)依赖关系的建立,最好不要在编程时候确定下来,即不要通过new的方式确定依赖关系,这种方式会使系统失去可扩展性、可复用性等特点。Spring框架是多个Bean通过DI方式建立依赖关系,建立复杂的依赖关系网,如图1.29所示。IoC概念IoC是InversionofControl,翻译过来就是“控制反转”。IoC就是:原来由A来决定创建B还是创建C的权力发生了反转,变成了由框架决定创建B还是创建C,再由框架把B或C的实例对象赋予给A。这就是IoC——“控制反转”。没有控制反转情况控制反转情况“控制反转”是符合“好莱坞原则”的,什么是“好莱坞原则”呢?就是“Don’tcallme,I’llcallyou.”,翻译过来“如果需要我会给你打电话,你不要给我打电话”。我给它改了一下叫做“中国式找工作原则”。总而言之,“控制反转”就是将控制权倒置,从而使软件系统发生了具有可扩展性、可复用性等特性的飞跃,这个设计原则在OOAD中非常有用。DI“依赖注入”是IoC“控制反转”的一种特例。Spring是一个IoC框架,更准确的说是一个DI框架DI的类型Spring提供两种主要的DI方式:Setter(设值)注入方式Constructor(构造器)注入方式为了介绍这两种注入方式,我们先对我们上一节的Hello示例进行改造。为接口Hello添加另外一个实现类DbHello,DbHello类又依赖于另外的一个接口DictionaryDAO,类DictionaryDAOImp是接口DictionaryDAO实现类。设值注入方式如果我们采用设值注入方式,改造后的类图如图1.32所示。<?xmlversion=”1.0”encoding=”UTF-8”?><beansxmlns=”” xmlns:xsi=”” xsi:schemaLocation=””> <beanid=”myhello”class=”com.tongking.spring.DbHello”> <propertyname=”dao”> <reflocal=”dictionaryDAO”/> </property> </bean><beanid=”dictionaryDAO”class=”com.tongking.spring.DictionaryDAOImp”/></beans>构造器注入方式如果我们采用构造器依赖注入方式,那么改造后的类图如图1.33所示。<?xmlversion=”1.0”encoding=”UTF-8”?><beansxmlns=”” xmlns:xsi=”” xsi:schemaLocation=””> <beanid=”myhello”c

温馨提示

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

评论

0/150

提交评论