Presentation is loading. Please wait.

Presentation is loading. Please wait.

第十四章 Spring应用详解 在本章的内容中,首先介绍Spring核心技术控制 反转和面向切面编程的基本知识,在Web方面,详 细介绍了如何使用Spring实现MVC,然后对Spring 中的数据库操作进行简单的介绍,在本章的最后, 展示了如何在Spring中进行事务处理,通过本章 内容的学习,读者可以从整体上了解Spring的基.

Similar presentations


Presentation on theme: "第十四章 Spring应用详解 在本章的内容中,首先介绍Spring核心技术控制 反转和面向切面编程的基本知识,在Web方面,详 细介绍了如何使用Spring实现MVC,然后对Spring 中的数据库操作进行简单的介绍,在本章的最后, 展示了如何在Spring中进行事务处理,通过本章 内容的学习,读者可以从整体上了解Spring的基."— Presentation transcript:

1 第十四章 Spring应用详解 在本章的内容中,首先介绍Spring核心技术控制 反转和面向切面编程的基本知识,在Web方面,详 细介绍了如何使用Spring实现MVC,然后对Spring 中的数据库操作进行简单的介绍,在本章的最后, 展示了如何在Spring中进行事务处理,通过本章 内容的学习,读者可以从整体上了解Spring的基 本知识,通过具体示例程序的学习,读者可以逐 步学习编写自己的Spring程序。

2 14.1 Spring简介 Spring是一个开源框架,是为简化企业级应用系 统开发而推出的,通过使用Spring,用户可以用 简单的Java Bean实现以前只能用EJB才能完成的 任务,虽然Spring是为企业级应用推出的,但是 所有的Java系统开发都可以使用Spring,包括桌 面应用程序和企业级的Web应用,在本节中,将对 Spring做一个大体的介绍,关于Spring的核心技 术和使用方法在后面的章节中进行介绍。

3 Spring简介 Spring是一个轻量级的框架,Spring所耗费的系 统资源开支比较少,而且Spring是非侵入失的, 在一般情况下,引入Spring的系统中,具体的对 象并不依赖于Spring的API。在Spring中,提供了 对反转控制(IoC)和面向切面编程(AOP)的良 好支持,Spring是由以下几个模块组成的,这些 模块提供了开发企业级应用所需要的基本功能, 可以在自己的程序中选择使用需要的模块。

4 Spring开发环境的简单配置 Spring开发环境的配置方法比较简单,可以下载 Spring的开发包,把下载下来的压缩文件解压到 硬盘中,然后把Spring.jar和其他相关类库加入 项目即可。另外,还可以在Eclipse(已经安装 MyEclipse插件)中配置Spring的开发环境,在 Eclipse中新建一个项目,Java Project或者Web Project均可,这个可以根据需要而定,新建工程 完成以后,在Eclipse的菜单栏中选择 “MyEclipse”|“Capabilities”|“Add Spring Capabilities”就可以进入添加Spring模块的界 面,在这个界面中选择所需的Spring模块的类库 即可。

5 14.2 Spring核心理论控制反转介绍 Spring框架本身提供了很多的功能,这些功能之 所以能组合成为一个整体,就是因为使用了控制 反转技术,控制反转是Spring的核心技术之一, 在本小节中,将介绍控制反转的基本知识,同时 详细展示了如何在Spring中实现控制反转。

6 控制反转基础知识 在学习Spring的时候,往往会遇到控制反转 (Inversion of Control)、依赖注入 (Dependency Injection)这些新名词,IoC也 就是由容器控制程序之间的关系,而不是在程序 中直接使用代码控制,控制权由程序代码转移到 外部容器,控制权的转移就是所谓的反转,这就 是控制反转(IoC)的本质含义。 由于程序组件 之间的依赖关系是有容器控制的,在程序运行期 间,是由容器动态将依赖关系注入到组件之中, 这就是依赖注入的本质含义。依赖注入在本质上 也就是控制反转的另一种解释。

7 控制反转简单示例 在介绍Spring控制反转的具体内容之前,先展示 一个具体的示例程序,通过这个示例程序,读者 可以提前体验使用控制反转带来的便捷之处。在 下面这个示例程序中,通过控制反转实现了问候 用户的基本功能。(具体内容请参照书。)

8 Spring中注入依赖的方法 Spring中对象之间的依赖是由容器控制的,在程 序运行期间,容器会根据配置文件的内容把对象 之间的依赖关系注入到组件中,从而实现对象之 间的协同工作。在Spring中,注入对象之间依赖 关系的方式有以下几种。(具体内容请参照书。)

9 Spring中通过赋值方法注入依赖 在接下来的内容中,将简单介绍Spring中注入依 赖的几种方法,在上面的简单的Spring依赖注入 的示例中,并没有展示复杂的注入特性,仅仅是 在程序的运行期间,把Spring IoC这个字符串赋 值给Welcome和Bye这两个Bean中的name属性,同 时在Welcome和Bye这个两个Bean中还提供了name 属性的getter和setter方法,Spring可以调用 Bean中的属性设置方法,在程序运行期间,根据 配置文件中的内容给Bean的属性赋值。(具体内 容请参照书。)

10 Spring中通过构造器注入依赖 赋值注入的方法虽然非常方便,但是也有自身的 缺点,在赋值注入的方式中,无法确定哪些属性 是必需的,哪些属性是可选的,这样就容易造成 初始化bean的时候,有的属性可能并没有被正确 设置,而在Spring中,提供了构造器注入依赖的 方式,这种方式在构造器中强制需要初始化的方 法,而且还可以指定初始化参数的顺序,这种方 式可以满足一些赋值注入无法实现的需要。(具 体内容请参照书。)

11 14.3 Spring核心理论面向切面编程介绍 面向切面编程(Aspect Oriented Programming即 AOP)是Spring中的另一中核心技术, AOP提供另 一种角度来思考程序结构,通过使用AOP可以给面 向对象编程提供强大的辅助功能,在Spring框架 中,提供了对AOP的支持,Spring的AOP框架允许 将分散在系统中的模块集中起来,通过AOP中的切 面实现,并通过Spring中强大的切入点机制在程 序中随时引入切面,通过使用Spring的AOP框架, 就可以给系统中添加强大的服务,例如身份认证、 声明式事务管理等服务。

12 面向切面编程基础知识 在一般的应用系统中,会通过多个模块实现系统 的总体功能,每个模块的主要功能是提供不同的 业务逻辑,但是这些模块会需要一些相似的底层 功能的支持,例如安全、用户身份认证、事务处 理等。如果在各个模块中都通过代码来调用这些 底层功能,就会是调用代码分布在系统的各个角 落,从而增加了系统的耦合性,给后继的维护升 级都带来很大的潜在困难。

13 在Spring中创建前置通知 在下面的实例程序中,将展示Spring中创建前置 通知的基本方法,下面Customer这个类中,实现 了最基本的buy()方法,在这个方法中相控制台 打印购买商品的信息。(具体内容请参照书。)

14 在Spring中创建后置通知 在上面的示例程序中,展示了Spring中前置通知 的使用方法,在下面的实例程序中,将展示在 Spring中创建后置通知的基本方法,在这里仍然 使用Customer这个bean作为目标对象,在顾客执 行购买商品的动作之后,在控制台打印告别信息。 (具体内容请参照书。)

15 在Spring中创建拦截通知 在上面两个实例程序中,分别展示了Spring中前 置通知和后置通知的具体实现方法,在实际的开 发过程中,也会有创建拦截通知的需要,也就是 在方法执行之前和方法返回之后都能够进行特殊 的处理,这在Spring中就是拦截通知。(具体内 容请参照书。)

16 在Spring中创建异常通知 在上面的示例程序中,展示的都是程序正常运行 的时候附加的通知,在Spring中,也提供了异常 通知,这种通知会在目标对象抛出异常的时候被 调用,下面是在Spring中创建异常通知的具体方 法。(具体内容请参照书。)

17 使用Spring静态切入点 在上面展示的各种通知中,使用的就是静态切入 点把通知应用在目标对象上,但是在上面的示例 程序中,在目标对象中,只有一个方法,所以就 不用指定把通知应用在哪个方法中,Spring会把 通知应用在这个唯一的方法上。

18 14.4 Spring实现MVC 虽然在Spring中可以非常方便的与其他MVC框架集 成,例如Struts、WebWork等都可以集成在Spring 中,而且在Spring中也实现了自身的MVC框架,在 Spring的MVC框架中,可以透明地将Web参数绑定 到业务对象中, 同时在Spring中还可以使用现存 的多种视图技术,Spring解决了传统MVC框架中的 不足。

19 Spring中MVC的实现原理 Spring MVC的核心组件是DispatcherServlet,这 个Sevlet是Spring的前端控制器, DispatcherServlet和其他普通的Servlet一样, 需要在web.xml中进行配置,下面就是一个 DispatcherServlet的基本配置,具体代码如下。 (具体内容请参照书。)

20 Spring中简单MVC示例 在本节中,将通过一个简单的示例程序,用来展 示Spring MVC的基本处理流程,在上面的章节中, 介绍了Spring MVC的基本流程,在这里我们先辨 析控制器的逻辑,在这个示例程序中,控制器的 具体代码如下。(具体内容请参照书。)

21 把用户请求映射到控制器 在Spring中还提供了另一种映射处理器,即 SimpleUrlHandlerMapping,这个映射处理器的使 用也非常简单,例如在下面的配置示例中,有两 个控制器bean,分别对应着两个不同的用户请求 URL,这就可以使用SimpleUrlHandlerMapping来 进行处理,具体的配置过程如下。(具体内容请 参照书。)

22 在控制器中处理带参数的用户请求 通过上面章节中配置的映射处理器,可以把用户 的请求URL映射到控制器中,然后控制器就可以根 据用户请求的信息进行相应的处理,在本节中将 介绍Spring MVC中处理用户请求参数的具体方法。 (具体内容请参照书。)

23 在控制器中处理简单的表单 在Spring MVC中,提供了处理表单的处理器,不 仅可以处理简单的表单,而且可以提供复杂表单 的向导,在下面会展示Spring中处理简单表单的 基本方法。(具体内容请参照书。)

24 解析视图 在上面的示例程序中可以看出,Spring MVC的控 制器在处理结束之后,会把处理的结果用 ModelAndView对象的形式返回,这个对象是不能 直接展示给用户的,需要通过视图解析器的解析, 把这个对象中的信息提取出来以后在展示给用户。 上面的示例程序中,仅仅使用jsp模版来展示 ModelAndView对象的信息,其实在Spring MVC中 提供了很多中视图展示技术,例如JSTL、JSP、 Velocity等,这些内容可以参考Spring reference,在这里限于篇幅不再赘述。

25 14.5 Spring中的数据库操作 数据库操作是Spring独具特色的地方,再Spring 的数据库操作中,不用再担心数据库资源释放的 问题,Spring中提供了常用的数据库操作模版, 用户可以专注书写自己的数据库操作业务代码, 而不再过多考虑数据库连接的取得与释放。而且 Spring还可以非常方便与其他ORM工具整合, Spring提供了对这些ORM工具良好的支持。

26 在Spring中配置数据源 在对数据库进行操作的时候,首先需要取得一个 Connection对象,即需要首先取得与数据库的连 接,在Spring中,是从DataSource中获取 Connection对象的,通过下面的配置文件就完成 了对数据源DataSource的配置。

27 14.5.2 使用JdbcTemplate进行简单的数据库操作
虽然Spring可以很好的和其他ORM工具整合,但是 普通的JDBC操作还是大部分开发人员的首选,所 以在Spring中提供很好的JDBC支持, Spring中的 JDBC框架承担了资源管理和错误处理的任务,从 而使数据库操作的代码非常简洁。在Spring这些 功能可以用JdbcTemplate类来完成,我们可以在 程序用下面的代码创建一个JdbcTemplate对象。

28 14.5.3 使用JdbcTemplate进行Java对象查询操作
在上面的实例程序中,返回的结果都是Java中基 本的数据库类型,在Spring中,同样可以返回对 象格式的结果,而且在Spring中返回对象比在简 单的JDBC重返回对象的操作要简洁很多。在下面 的实例程序中,将展示Spring返回基本Java对象 的具体方法。(具体内容请参照书。)

29 14.5.4 Spring中另一种Java对象查询的实现方法
在Spring中,提供了另外一种数据库操作方法, 同样可以把查询的结果模拟成Java对象,即使用 org.springframework.jdbc.object.MappingSqlQ uery,在下面的示例程序中,展示的就是使用 MappingSqlQuery把查询的结果模拟成对象的操作 过程,详细代码如下。(具体内容请参照书。)

30 Spring中更新Java对象的方法 在Spring中提供了一种真正把数据库操作模拟成 对象的方法,下面的这个示例程序就展示了这样 一种方法,在这个实例程序中,把更新数据库的 操作模拟成面向对象的方法。在这个实例程序中, 继承了SqlUpdate类,从而实现了用对象的形式更 新数据库的操作。(具体内容请参照书。)

31 Spring和第三方ORM工具整合 在Spring中,本身并没有提供ORM的实现,但是提 供了对现在流行的各种ORM工具的支持,例如 Hibernate、OJB、iBatis等,Spring可以和这些 ORM框架很好的整合,用来提供ORM的服务,而且 在Spring中,还提供了一些基于ORM的附加服务, 例如强大的事务管理功能、异常处理、模板类等。 这就使Spring的ORM使用和操作变得非常方便。

32 14.6 Spring中的事务处理 在数据库操作中,事务处理是非常重要的,在 Spring中提供了强大的事务处理功能,不仅可以 用编程的方式是实现,而且可以使用声明方式实 现,通过使用Spring,可以在简单的JavaBean中 使用类似EJB中的声明式事务管理。

33 事务处理的基本知识 在数据库操作中,事务处理是经常用到的,例如 在银行的业务中,甲方给乙方账户转账10万人民 币,首先要从甲方的账户减去10万,然后再给乙 方的账户增加10万,整个操作过程是一个整体, 这就是一个简单的事务,在这个事务中必须保证 操作的完整性,两步操作要么全执行,如果其中 一步出错全都不执行,从而保证这个业务的正确 性和完整性。

34 Spring中的事务管策略 在Spring中,并没有直接管理事务,而是提供了 多种职务管理器,将事务管理的任务委托给这些 事务管理器进行处理,每种事务管理器都是针对 某种特定的平台,例如使用JDBC DataSource进行 数据库操作的时候可以使用 DataSourceTransactionManager进行事务处理, 使用Hibernate的时候可以使用 HibernateTransactionManager进行事务管理。

35 使用Spring编程式事务管理 在14.6.1中,可以看到使用JDBC进行事务处理的 代码,在Spring中,处理事务的代码会简单很多, Spring中处理事务可以通过编程的方式实现,即 通过代码调用Spring中的事务管理API,也可以通 过Spring的上下文配置,用声明的方式进行事务 管理。

36 使用Spring声明式事务管理 在Spring中,提供了声明式的事务管理,使简单 的JavaBean中也拥有了类似EJB的声明式事务管理 功能。Spring中的声明式事务管理是使用AOP框架 实现的,可以在程序中需要事务管理的地方用AOP 的方式引入事务管理。

37 14.7 小结 在本章的内容中,介绍了Spring的基本知识,对 Spring中各个部分的主要内容做了基本的介绍, 在Spring中,核心的技术就是IoC和AOP,这两种 技术贯穿了Spring的所有主题。Spring数据库方 面、Web方面、事务处理方面都有着强大的功能, 在本章中仅仅是对Spring的核心内容做了简单的 介绍,从而是读者对这项技术有一个清醒的认识, 如果读者有意进一步研究Spring的相关知识,可 以参考Spring Reference,这是学习Spring的一 个经典的资料。


Download ppt "第十四章 Spring应用详解 在本章的内容中,首先介绍Spring核心技术控制 反转和面向切面编程的基本知识,在Web方面,详 细介绍了如何使用Spring实现MVC,然后对Spring 中的数据库操作进行简单的介绍,在本章的最后, 展示了如何在Spring中进行事务处理,通过本章 内容的学习,读者可以从整体上了解Spring的基."

Similar presentations


Ads by Google