一、spring概述
1、开发理念
spring框架是基于POJO(简单Java对象)的轻量级开发理念。
2、本质
提供各种服务,以帮助我们简化基于POJI的Java程序开发。
3、spring框架是一个分层架构,由多个服务(模块)组成。
- CORE核心模块
- AOP模块
- 提供了数据访问和事务管理服务,并且对其他框架提供了集成支持。(MyBatis)
- WEB服务模块,spring提供了自己的一套框架spring mvc,并且对其他web框架提供了集成支持。
二、Core核心模块
整个Spring框架构建在Core核心模块之上,它是整个框架的基础。在该模块中, Spring为我们提供 了一个IoC容器实现,用于帮助我们以依赖注入的方式管理对象之间的依赖关系。 IoC容器就是控制反转(inversion of control),别名是依赖注入。
2.1、ioc所有别名
- ioc
- 控制反转
- 依赖注入
- Inversion Of Controll
2.2、IoC模式是什么
实现一种功能的类需要用到什么依赖对象,主动去获取。代码体现在直接在功能类的构造函数中新建依赖对象。 FXMewsProvider是功能类,实现从报纸上获取信息,然后存储到数据库中。 IFXNewsListener是依赖类(接口),实现从报纸上获取信息 IFXMewsPersister是依赖类(接口),实现把获取的内容存到数据库
2.2.1、被注入对象主动获取依赖对象
public class FXMewsProvider{
private IFXNewsListener newsListener;
private IFXMewsPersister mewsPersister;
public FXMewsProvider() {
this.newsListener = new DowJonesNewsListener();
this.mewsPersister =new DowJonesNewsPersister();
}
}
IoC模式它的控制反转,反转的就是让你从以前的事必躬亲,转变为现在的享受服务。用什么,别人送过来就行。IoC的理念就是让别人为你服务。
2.2.2、被注入对象控制反转
被注入对象需要什么,直接跟IoC Service Provider招呼一声,后者就会把相应的被依赖对象注入到被注入对象中,从而达到IoC Service Provider为被注入对象服务的目的。 IoC Service Provider在这里就是通常的IoC容器所充 当的角色。从被注入对象的角度看,与之前直接寻求依赖对象相比,依赖对象的取得方式发生了反转, 控制也从被注入对象转到了IoC Service Provider那里。 其实IoC就这么简单!原来是需要什么东西自己去拿,现在是需要什么东西就让别人送过来。
2.3、依赖注入的方式
- 构造方法
- get/set方法
- 接口
2.4、比较主动获取依赖对象和控制反转
public class FXNewsProviderIOC {
private IFXNewsListener newsListener;
private IFXNewsPersister mewsPersister;
public FXNewsProviderIOC(IFXNewsListener newsListener, IFXNewsPersister mewsPersister) {
this.newsListener = newsListener;
this.mewsPersister = mewsPersister;
}
}
创建功能类对象时,只要传入不同的对象参数(获取和存储不同种类的报纸信息),就可以重复利用功能类。
被注入对象主动获取依赖类 被注入对象控制反转
三、IoC Server Provider
Ioc Server Provider是抽象出来的概念,指代实现控制反转(业务对象实现绑定到一起的实现方式)。可以是一段代码。 Spring IoC容器就是提供依赖注入服务的IoC Server Provider。
3.1、IoC Server Provider把被注入对象 和被依赖对象 注册到Spring IoC容器中
3.2、如何明确被注入对象 和被依赖对象 相互之间的依赖注入关系。
- 这句话的意思是,如何知道被注入对象想要哪个被依赖对象。
- 去酒吧,我跟服务员说我想要汾酒,服务员如何知道哪个是汾酒?
- 被注入对象提供依赖注入的IoC Service Provider来说,它也同样需要知道自己所管理和掌握的被注入对象和依赖对象之间的对应关系。
编码方式管理对象间的依赖注入关系
配置文件管理对象间的依赖注入关系
|