3.14用户管理角色管理和3.15springIOC和DI
3.14(用户管理和角色管理及spring框架的介绍)
3.15IOC和DI
1:Spring其核心就是提供一种新的机制管理业务对象及其依赖关系。
2:Spring的核心:
IOC(控制反转)
DI(依赖注入)
AOP(面向切面编程)
3:Spring的七大模块
Core:核心模块。提供了Spring的容器来管理各种业务Bean对象以及Bean对象之间的依赖与关联关系。
DAO:对JDBC和JDBC的事务做了扩展和支持。
ORM:对ORM框架做了扩展和支持。
AOP:面向切面编程模块。
Spring Web:跟其它WEB框架(Struts1.x,Struts2.x、WebWork、JSF)结合的工具类和接口。
Spring Web MVC:Spring自身提供的Web MVC的开发框架。
Spring Context:对于J2EE平台架构其它技术组件的扩展(如EJB,JavaMail,RMI,JMS等)
4:Spring框架的特点
5:IOC
bean name = "" id = "" class = "" scope = "";
request:相当于WEB中的requestScope
session:相当于WEB中的SessionScope
global session:相当于WEB中的ApplicationScope
singleton:对象的单例模式,对象只产生一个实例 默认值。
prototype:对象的原型模式,每次产生一个对象。
例子链接例子链接
控制反转
对象的实例化的过程原先是由代码控制,因此对象的生命周期由代码决定。
在Spring中,对象的实例化是由Spring容器控制。
对象的实例化的控制过程由原先的系统转移到Spring容器中,这一控制权的转变就是控制反转。
ApplicationContext
FileSystemXmlApplicationContext:以硬盘文件的路径方式加载
ClasspathXmlApplicationContext:从src目录加载
WebApplicationContext:与WEB工程组合时使用。
6:DI
依赖注入
容器将被调用者的实例注入到调用者的过程称为依赖注入。
Spring中的2种方式注入
属性注入 SET/GET
构造注入 构造方法注入
属性注入与构造注入同时存在时, 最终结果为属性注入的对象。因为构造方法执行完成后,开始
进行属性的初始化操作。
7:关于依赖注入和控制反转的总结:点击打开链接
7.1:
理解好Ioc的关键是要明确“谁控制谁,控制什么,为何是反转(有反转就应该有正转了),哪些方面反转了”,那我们来深入分析一下:
●谁控制谁,控制什么:传统Java SE程序设计,我们直接在对象内部通过new进行创建对象,是程序主动去创建依赖对象;而IoC是有专门一个容器来创建这些对象,即由Ioc容器来控制对象的创建;谁控制谁?当然是IoC 容器控制了对象;控制什么?那就是主要控制了外部资源获取(不只是对象包括比如文件等)。
●为何是反转,哪些方面反转了:有反转就有正转,传统应用程序是由我们自己在对象中主动控制去直接获取依赖对象,也就是正转;而反转则是由容器来帮忙创建及注入依赖对象;为何是反转?因为由容器帮我们查找及注入依赖对象,对象只是被动的接受依赖对象,所以是反转;哪些方面反转了?依赖对象的获取被反转了。
用图例说明一下,传统程序设计如图2-1,都是主动去创建相关对象然后再组合起来:
图2-1 传统应用程序示意图
当有了IoC/DI的容器后,在客户端类中不再主动去创建这些对象了,如图2-2所示:
图2-2有IoC/DI容器后程序结构示意图
7.2:
理解DI的关键是:“谁依赖谁,为什么需要依赖,谁注入谁,注入了什么”,那我们来深入分析一下:
●谁依赖于谁:当然是应用程序依赖于IoC容器;
●为什么需要依赖:应用程序需要IoC容器来提供对象需要的外部资源;
●谁注入谁:很明显是IoC容器注入应用程序某个对象,应用程序依赖的对象;
●注入了什么:就是注入某个对象所需要的外部资源(包括对象、资源、常量数据)。
7.3:
让我们来看下IoC容器到底是如何工作。在此我们以xml配置方式来分析一下:
一、准备配置文件:就像前边Hello World配置文件一样,在配置文件中声明Bean定义也就是为Bean配置元数据。
二、由IoC容器进行解析元数据: IoC容器的Bean Reader读取并解析配置文件,根据定义生成BeanDefinition配置元数据对象,IoC容器根据BeanDefinition进行实例化、配置及组装Bean。
三、实例化IoC容器:由客户端实例化容器,获取需要的Bean。
整个过程是不是很简单,执行过程如图2-5,其实IoC容器很容易使用,主要是如何进行Bean定义。下一章我们详细介绍定义Bean。
图2-5 Spring Ioc容器