当前位置:
文档之家› 第4章Spring业务逻辑层技术
第4章Spring业务逻辑层技术
4.3.1 Spring 控制反转(IoC)
依赖注入(Dependency Injection)和控制反转(Inversion of Control)是同一个概念。具体含义是:当某个对象(可能是一 个Java实例,调用者)需要另一个对象(另一个Java实例,被 调用者)的协助时,在传统的程序设计过程中,通常由调 用者来创建被调用者的实例。但在Spring里,创建被调用 者的工作不再由调用者来完成,因此称为控制反转;创建被 调用者实例的工作通常由Spring容器来完成,然后注入调 用者,因此也称为依赖注入。
4.3.1 Spring 控制反转(IoC)
IoC原理 Spring支持三种主流的IoC注入类型 设值( setter)注入、购造器注入和方法注入。 • 设值注入 指通过调用无参构造器实例化受管POJO后,调用 setter方法设置对象间的依赖关系。 • 构造器注入 往构造器传入若干参数完成依赖注入,传入的参数都是受 管POJO依赖的对象。
第四章 Spring2.0
业务逻辑层技术
教学内容
Spring 简介 有关知识补充 Spring 框架 Spring 配置文件
4.1 Spring简介——概述
Spring是一个开源框架,是为了解决企业应用开发的复杂 性而创建的。
目的:解决企业应用开发的复杂性。 功能:使用基本的JavaBean代替EJB,并提供了更多的企业
4.3.1 Spring 控制反转(IoC)
ApplicationContext IoC容器 建立在BeanFactory基础之上,对企业级应用开发提供了
更多支持,增加了国际化消息(i18n)支持、事件传送 (发送和消费事件)支持、访问低层资源 (.URL和java.io.File)、IoC容器分层(面向架 构分层)等。
IOC特点
4.3.1 Spring 控制反转(IoC)
4.3.1 Spring 控制反转(IoC)
IoC的优点: 不必关心组件的创建 不必管理组件的生命周期 组件容易共享 测试非常容易
4.3.1 Spring 控制反转(IoC)
Spring提供的两个IoC容器(BeanFactory和 ApplicationContext)(见工厂模式知识补充) BeanFactory主要适用于环境、内容受限的场合,如 在Applet环境中, BeanFactory是最基础的IoC容器, 它提供了配置框架和基础功能。 ApplicationContext继承于BeanFactory,更适合于 企业级的应用开发,重点讨论。
4.3.1 Spring 控制反转(IoC)
BeanFactory 可将IoC容器比做食品加工厂。在提供源材料(POJO类) 后,经过加工工艺和设备(Spring IoC和Spring AOP) 处理后,顾客得到满意的食品(受管POJO,可能装备了 事务、安全等功能)。
4.3.1 Spring 控制反转(IoC)
4.3 Spring 框架组成
Spring是一个分层框架,由若干定义好的模块组成如下图 所示。 Spring2.0所有模块定义在核心容器之上,核心容 器定义了创建、配置和管理bean的方式。
Spring2.5的模块DAOSpring来自JDBC 集成事务管理
ORM
Hibernate JPA
TopLink iBATS
IoC原理 默认时,配置的POJO都是单例的,即整个IoC容器仅 有一个对应的POJO实例,而不是每次调用时产生一个 实例(原型的)。 在初始化BeanFactory实例factory后,IoC容器并不 预先实例化在配置文件中声明的POJO实例。只是在应 用程序调用对应的POJO时,Spring 才会实例化用到 的受管POJO。
2.
Person p = (Chese)context.getBean("chese");
3.
System.out.println(p.sayGoodBye("rose"));
4.
System.out.println(p.sayHello("rose"));
4.3 Spring 框架组成
Spring框架组成 控制反转IoC (依赖注入DI) 面向方面(AOP)
在面向对象的编程中,工厂模式是一种经常被使用到的模 式。
工厂模式就是专门负责将大量有共同接口的类实例化,而且 不必事先知道每次是要实例化哪一个类的模式。
4.2.2 工厂模式知识补充
X-----Person Xy---Chinese Xz---American 工厂类---PersonFactory
非侵入 ——在应用中,一般不需要引用springjar包里的类。 控制反转——Spring通过一种称作控制反转(IoC)的技术
促进了松耦合。当应用了IoC,某一接口的具体实现类的 选择控制权从调用类中移除,转交给第三方裁决。 面向切面——Spring提供了面向切面编程的丰富支持,允 许通过分离应用的业务逻辑与系统级服务(例如审计 (auditing)和事务()管理)进行内聚性的开发。应用 对象只实现它们应该做的——完成业务逻辑——仅此而已。 它们并不负责其它的系统级关注点,例如日志或事务支持。
与此同时,AOP技术使得应用程序能够透明地享受到Java EE容器提供的企业级的服务(如JMX、JCA CCI和 JMS) 。
Spring DI容器针对各种DAO层集成技术(如Hibernate、 JPA和JDBC)、Java EE服务及技术提供了一流的集成 支持。
4.1 Spring简介——框架
4.3.1 Spring 控制反转(IoC)
IoC设计模式将创建对象实例的任务交给IoC容器,应用 代码只需直接使用实例。
实现了IoC模式的框架叫IoC容器。 IoC的另一个名字叫依赖注入(dependency Injection)
- 组件之间的依赖关系由容器在运行时决定,形象地讲, 就是由容器动态地将某种依赖关系注入到组件中。
4
4.1 Spring简介——容器
Spring即是一个容器又是一个框架。
容器——Spring包含并管理应用对象的配置和生命周期, 在这个意义上它是一种容器,你可以配置你的每个bean如 何被创建——基于一个可配置原型(prototype),bean可 以创建一个单独的实例或者每次需要时都生成一个新的实 例——以及它们是如何相互关联的。
Entity Bean(实体Bean)是持久数据组件,代表存储在外 部介质中的持久(Persistence)对象或者已有的企业应用 系统资源。简单地讲,一个Entity Bean可以代表数据库中 的一行记录,多个客户端应用能够以共享方式访问表示该 数据库记录的Entity Bean。
4.2.2 工厂模式知识补充
核心容器 核心容器提供 Spring 框架的基本功能。核心容器的主 要组件是 BeanFactory(ApplicationContext). BeanFactory 使用控制反转 (IoC) 模式将应用程序的 配置和依赖性规范与实际的应用程序代码分开
4.2.1 POJO类补充
POJO,简单的Java对象(Plain Ordinary Java Objects)实际 就是普通JavaBeans,使用POJO名称是为了避免和EJB混淆起 来, 而且简称比较直接. 其中有一些属性及其getter setter方 法的类。
借助于IoC ,实现“面向接口编程,而不是面向实现编 程”。
4.3.1 Spring 控制反转(IoC)
IoC模式,即由容器控制程序之间的依赖关系,而不是由程 序代码直接控制,控制权的转移就是反转。
依赖关系 意指类之间的访问关系。 如果类A访问类B的属性或方法,或者类A实例化类B,则称 类A依赖于类B。
Spring框架是连接Struts与Hibernate的桥梁,同时它很 好地处理了业务逻辑。
Spring框架提供的控制反转和面向方面编程、插件式架 构降低了应用程序之间的依赖性。
借助于XML定义文件,开发者能够在程序运行时连接不同 的组件。
4.1 Spring简介——概念
Spring基本概念 IoC =Inverse of Control DI =Dependence Injection AOP • 面向接口 • 面向抽象
为了使POJO编程模型在Spring框架中可用,Spring引入 了Spring DI容器和Spring AOP实现技术,它们在倡导 POJO编程模型方面的功劳是最大的 。
4.1 Spring简介——容器
Spring 提供的控制反转(DI)容器能够管理POJO及各种 Java组件。DI负责POJO的管理,比如为它提供事务服务、 生命周期服务、线程服务、缓存服务和安全性服务等。
AOP技术实现
Spring AOP AspectJ5 无缝集成
Java EE 服
务及技术
JMX JMS EJB3.0组件技术 邮件服务 远程服务 脚本技术集成 线程池、任务调度 支持
Web
Spring Web MVC
Web框架集
Struts Webwork Typestry
JSF 富视图支持
Velocity FreeMakerPDF Jsper Reports
4.3.1 Spring 控制反转(IoC)
ApplicationContext Spring IoC为ApplicationContext提供了许多实现类, ClassPathXmlApplicationContext和
FileSystemXmlApplicationContext使用最为频繁。
Excel Spring Portlet
MVC
Spring2.5内核(IoC容器)