Spring概述.ppt_第1页
Spring概述.ppt_第2页
Spring概述.ppt_第3页
Spring概述.ppt_第4页
Spring概述.ppt_第5页
已阅读5页,还剩29页未读 继续免费阅读

下载本文档

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

文档简介

1、Spring 概述,2,目标,Spring简介 IOC简介 AOP简介,3,Spring历史,Spring的基础架构起源于2000年早期,它是Rod Johnson在一些成功的商业项目中构建的基础设施 在2002后期,Rod Johnson发布了Expert One-on-One J2EE Design and Development一书,并随书提供了一个初步的开发框架实现interface21开发包,interface21就是书中阐述的思想的具体实现。后来,Rod Johnson 在interface21 开发包的基础之上,进行了进一步的改造和扩充,使其发展为一个更加开放、清晰、全面、高效的

2、开发框架Spring。 2003年2月Spring框架正式成为一个开源项目,并发布于SourceForge中,4,Spring框架简介,Spring是一个开源框架,目前 在开源社区的人气很旺,被认为是最有前途的开源框架之一 最高版本是2.0,但是还没有很大的商业用途,反而最常使用的是1.2.8版本(比较稳定) 下载地址是:/ Spring2.0的中文开发手册: ,5,Spring框架简介,Spring 是一个开源框架,是为了解决企业应用程序开发复杂性而创建的 Spring是一个轻量级的IoC和AOP容器框架 Spring是一个解决了许多

3、在J2EE开发中常见的问题的强大框架 Spring 框架是一个分层架构,由 7 个定义良好的模块组成 Spring 框架的每个模块(或组件)都可以单独存在,或者与其他一个或多个模块联合实现,6,Spring框架简介,轻量级:从大小和系统开支上说Spring都算是轻量级的,整个Spring框架可以打包成一个1M多的JAR包,Spring处理开支也比较的小,同时Spring是一个非侵入式的,基于Spring开发的系统中的对象一般不依赖于Spring的类。 反向控制(依赖注入):Spring提倡使用反向控制(IoC)来实现松耦合,使用IoC,对象是被动接受依赖类而不是主动去找,你可以将IoC理解为J

4、NDI的反转对象不是从容器中查找他的依赖类,而是容器在实例化对象的时候主动将它的依赖类注入给它,7,Spring框架简介,面向切面:面向切面是关注系统的在横向开发,Spring对面向切面的编程提供了强大的支持。允许通过分离应用的业务逻辑与系统级服务(例如审计(auditing)和事务()管理)进行内聚性的开发。应用对象只实现它们应该做的完成业务逻辑仅此而已。它们并不负责(甚至是意识)其它的系统级关注点,例如日志或事务支持 容器:Spring是一个容器,它包含并且管理系统对象的生命周期和配置,你可以通过配置来设定你的Bean是单一实例,还是每次请求产生一个实例,并且设定他们之间的关联关系。 框架

5、:Spring实现了利用简单的组件配置组合成一个复杂的系统。,8,Spring 框架的 7 个模块,9,Spring 框架的 7 个模块,如果作为一个整体,这些模块为你提供了开发企业应用所需的一切。但你不必将应用完全基于Spring框架。你可以自由地挑选适合你的应用的模块而忽略其余的模块 所有的Spring模块都是在核心容器之上构建的 核心容器定义了Bean是如何创建、配置和管理,10,Spring模块简介,核心容器: 核心容器提供 Spring 框架的基本功能。核心容器的主要组件是 BeanFactory,它是工厂模式的实现。BeanFactory 使用控制反转 (IOC) 模式将应用程序的

6、配置和依赖性规范与实际的应用程序代码分开 JSP/Servlet Spring 上下文: 核心模块的BeanFactory使Spring成为一个容器,而上下文模块使它成为一个框架。这个模块扩展了BeanFactory的概念,增加了对国际化(I18N)消息、事件传播以及验证的支持,另外,这个模块提供了许多企业服务,例如电子邮件、JNDI访问、EJB集成、远程以及时序调度(scheduling)服务。也包括了对模版框架例如Velocity和FreeMarker集成的支持,11,Spring模块简介,Spring AOP: 通过配置管理特性,Spring AOP 模块直接将面向方面的编程功能集成到了

7、 Spring 框架中。所以,可以很容易地使 Spring 框架管理的任何对象支持 AOP。Spring AOP 模块为基于 Spring 的应用程序中的对象提供了事务管理服务。通过使用 Spring AOP,不用依赖 EJB 组件,就可以将声明性事务管理集成到应用程序中 Spring DAO: JDBC DAO 抽象层提供了有意义的异常层次结构,可用该结构来管理异常处理和不同数据库供应商抛出的错误消息。异常层次结构简化了错误处理,并且极大地降低了需要编写的异常代码数量(例如打开和关闭连接)。Spring DAO 的面向 JDBC 的异常遵从通用的 DAO 异常层次结构,12,Spring模块

8、简介,Spring ORM: Spring 框架插入了若干个 ORM 框架,从而提供了 ORM 的对象关系工具,其中包括 JDO、Hibernate 和 iBatis SQL Map。所有这些都遵从 Spring 的通用事务和 DAO 异常层次结构 Spring Web 模块: Web 上下文模块建立在应用程序上下文模块之上,为基于 Web 的应用程序提供了上下文。所以,Spring 框架支持与 Jakarta Struts 的集成。Web 模块还简化了处理多部分请求以及将请求参数绑定到域对象的工作,13,Spring模块简介,Spring MVC 框架: MVC 框架是一个全功能的构建 We

9、b 应用程序的 MVC 实现。通过策略接口,MVC 框架变成为高度可配置的,MVC 容纳了大量视图技术,其中包括 JSP、Velocity、Tiles、iText 和 POI,14,控制反转 就是由容器控制程序之间的(依赖)关系,而非传统实现中,由程序代码直接操控 依赖注入 组件之间的依赖关系由容器在运行期决定 由容器动态的将某种依赖关系注入到组件之中 IoC也称为好莱坞原则(Hollywood Principle):“Dont call us, well call you” 即,如果大腕明星想演节目,不用自己去找好莱坞公司,而是由好莱坞公司主动去找他们,控制反转,15,控制反转,依赖注入机制

10、减轻了组件之间的依赖关系 提高组件的可移植性 提高组件的可移植性重用性,16,AOP定义,面向方面编程 (AOP) 提供从另一个角度来考虑程序结构以完善面向对象编程(OOP)。 面向对象将应用程序分解成 各个层次的对象,而AOP将程序分解成各个方面 或者说关注点 。 这使得可以模块化诸如事务管理等这些横切多个对象的关注点。(这些关注点术语称作 横切关注点。,17,AOP在Spring中的使用,提供声明式企业服务,特别是作为EJB声明式服务的替代品。这些服务中最重要的是 声明式事务管理,这个服务建立在Spring的事务管理抽象之上 允许用户实现自定义的方面,用AOP完善他们的OOP的使用,18,

11、AOP概念,方面(Aspect): 一个关注点的模块化,这个关注点实现可能 另外横切多个对象。事务管理是J2EE应用中一个很好的横切关注点例子。方面用Spring的 Advisor或拦截器实现 连接点(Joinpoint): 程序执行过程中明确的点,如方法的调 用或特定的异常被抛出。 通知(Advice): 在特定的连接点,AOP框架执行的动作。各种类 型的通知包括“around”、“before”和“throws”通知。通知类型将在下面讨论。许多AOP框架 包括Spring都是以拦截器做通知模型,维护一个“围绕”连接点的拦截器 链,19,AOP概念,切入点(Pointcut): 指定一个通知

12、将被引发的一系列连接点 的集合。AOP框架必须允许开发者指定切入点:例如,使用正则表达式 引入(Introduction): 添加方法或字段到被通知的类。 Spring允许引入新的接口到任何被通知的对象。例如,你可以使用一个引入使任何对象实现 IsModified接口,来简化缓存 目标对象(Target Object): 包含连接点的对象。也被称作 被通知或被代理对象 AOP代理(AOP Proxy): AOP框架创建的对象,包含通知。 在Spring中,AOP代理可以是JDK动态代理或者CGLIB代理,20,AOP概念,织入(Weaving): 组装方面来创建一个被通知对象。这可以在编译时

13、完成(例如使用AspectJ编译器),也可以在运行时完成。Spring和其他纯Java AOP框架一样, 在运行时完成织入。各种通知类型包括 Around通知: 包围一个连接点的通知,如方法调用。这是最 强大的通知。Aroud通知在方法调用前后完成自定义的行为。它们负责选择继续执行连接点或通过 返回它们自己的返回值或抛出异常来短路执行 Before通知: 在一个连接点之前执行的通知,但这个通知 不能阻止连接点前的执行(除非它抛出一个异常 Throws通知: 在方法抛出异常时执行的通知。Spring提供 强类型的Throws通知,因此你可以书写代码捕获感兴趣的异常(和它的子类),不需要从Thro

14、wable 或Exception强制类型转换 After returning通知: 在连接点正常完成后执行的通知, 例如,一个方法正常返回,没有抛出异常,21,Spring的切入点,Spring一般利用正则表达式来实现切入点 .*get.* .*absquatulate ,22,Spring的通知类型,around通知 Before通知 Throws通知 After Returning通知,23,Before通知,Before通知是一种简单的通知类型 在进入一个方法之前被调用 要实现MethodBeforeAdvice 接口中的before方法 Before通知可以被用于任何类型的切入点,24

15、,Before通知,public class TestBeforeAdvice implements MethodBeforeAdvice public void before(Method m, Object args, Object target) throws Throwable ,在进入方法前要处理的业务逻辑,执行方法,方法的参数,收管理的类,25,注册before通知, ,唯一的标识,26,定义切入点, .* ,27,注册Bean, erf.BeforeInterface beforeAdvisor ,28,Throws通知,如果连接点抛出异

16、常,Throws通知 在连接点返回后被调用 要实现ThrowsAdvice 接口中的afterThrowing方法 afterThrowing(Method, args, target, subclassOfThrowable) 它可以访问被调用的方法,方法的参数 ,目标对象和异常类型,29,After Returning通知,在方法执行之后调用 必须实现AfterReturningAdvice中的afterReturning 方法 afterReturning(Object returnValue, Method m, Object args, Object target) 返回值(不能改变

17、)、被调用的方法、方法的参数和 目标对象,30,After Returning通知,public class TestAfterReturningAdvice implements AfterReturningAdvice public void afterReturning(Object returnValue, Method m, Object args, Object target) throws Throwable ,加入方法执行后要处理的业务逻辑,31,around通知,Spring中最基本的通知类型是interception around advice Spring使用方法拦截器的around通知是和AOP联盟接口兼容的,32,around通知,实现around通知的 类需要实现MethodInterceptor接口 public class Debu

温馨提示

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

评论

0/150

提交评论