spring IOC/DI容器的理解

参与者:应用程序和spring
正向:如今的程序方向,A对象要使用B对象,如今是A里面直接建立B的实例,而后调用。
publc class A{
 void t1(){
 new B().t2();
 
 }
}
public class B{
void t2();spring

简而言之,就是程序须要什么。就由程序主动去获取须要的资源,这个方向就是正向。
容器是用来建立和装配对象,并管理对象生命周期的。对于应用程序而言,就是被动实例化和被动接受依赖了。
装配:
在spring容器内拼凑bean叫做装配。装配bean的时候,你是在告诉容器,
须要哪些bean,以及容器如何使用依赖注入将它们配合在一块儿。
IOC/DI思想:
1把程序之间的依赖关系去掉。
2把程序对象设置到IOC/DI容器的配置中,做为Bean
3 由IOC和DI容器来管理Bean的建立,实例化。
4 由IOC/DI容器把Bean之间的关系注入到须要这些关系的对象里面。
简而言之就是对象之间的依赖,所有去掉,而后由IOC/DI容器管理对象和对象之间的依赖关系。
功能:实现了对象之间的松散耦。框架

1谁控制谁?
IOC/DI容器控制应用程序
2控制什么
  a控制对象自己的建立和实例化和装配
  b控制对象之间的依赖关系
 3为什么叫反转?
由于应用程序不能主动的获取外部资源 ,而是被动等待IOC容器给他注入他所须要的资源。因此称为反转。测试

 

4:哪些方面反转了?
(1)建立对象的地方,spring建立
(2)程序得到资源(好比依赖的其余对象,也就是依赖关系)的方式反了。设计


5 为什么须要反转?
(1)引入了容器事后,整个体系更为松散,并且管理更有序。
(2)类之间的依赖关系真正实现了松散耦合,使得开发测试修改等变得容易。
IOC/DI并无帮咱们实现任何的业务功能,本来该有应用实现的功能,仍是有应用自身完成。对象

7:什么是依赖
 依赖(动词)于注入依赖(名词)关系
 
8 谁依赖于谁?
应用程序依赖于IOD/DI容器。接口

9为何须要依赖?
由于反转了事后,应用程序须要的资源都在容器里,因此要依赖容器。生命周期

10 依赖什么东西?
应用程序依赖于IOD/DI容器。依赖IOC/DI容器为它注入所须要的资源。(好比:依赖关系)
简写就是:依赖于注入依赖(名词)关系。应用程序依赖IOC注入依赖关系。资源

11 谁注入谁
IOC/DI容器 注入与应用程序
12注入什么东西?
注入应用程序须要的外部资源,好比依赖关系,常量值什么的开发

13 为什么注入?
由于程序要正常运行,须要这些资源。io

14 依赖注入和控制反转是同一个概念吗?
不是同一个概念
其实描述的是同一件事,可是是从不一样的角度在说。
控制反转:从IOC/DI的容器来讲。容器反过来控制应用程序
依赖注入:是应用程序的角度来讲。

15
控制反转的描述:IOC/DI容器反过来控制应用程序,控制应用程序所须要的外部资源,好比依赖关系
依赖注入的描述:应用程序依赖IOC/DI容器,依赖它(容器)注入所须要的外部资源。

16 IOC和DI 是什么?
IOC:是一种使用IOC/DI容器反过来控制应用程序,控制应用程序所须要的外部资源,这是一种程序开发思想
ID:应用程序依赖容器来注入所需的外部资源,是一种开发思想

17能作什么
松散对象的耦合。
使用spring,spring里有实现好的IOC/DI的容器,这样就不用本身去实现
18 怎么作?
能够本身实现,

19 用在什么地方?
凡是程序里面须要使用到外部资源的状况,均可以考虑使用IOC/DI容器
比方说 工厂类,如今就不须要啦。

20强调一下外部资源的概念
 对一个类来说,所谓外部资源,就是指在本身类的内部,不能获得或实现的东西,比方说在类里读取一个配置文件
 ,那么这个配置文件就至关于这个类的外部资源。
 又好比:A类里面要调用B类的方法,须要在A类获取B类的对象,那么对于A来说,B就是外部资源。
21 什么是IOC容器
 就是实习IOC思想,并提供对象建立,对象装配以及对象生命周期管理的软件就是IOC容器。
 
 IOC理解:
 1 应用程序无需主动new对象,而是描述对象应该如何被建立,IOC容器帮你建立,即被动实例化
 2 应用程序不须要主动装配对象之间的关系,而是描述须要哪一个服务,IOC容器会帮你装配,被动接受装配。
 3 主动变被动。如:别给咱们打电话,咱们会打给你。
 4 应用程序不知道依赖的具体实现,只知道须要提供某类的服务对象(面向接口):并松散耦合,一个对象
 应当对其余对象尽量少的了解,不和陌生人说话。
 5 减小类与类之间依赖的设计原则
 
 主动变被动:
 之前是应用程序是主动,如今变成了被动。可是他要告诉IOC容器须要什么资源,而后容器讲资源注入程序。
 应用程序永远是被动的。
 

1 ioc和DI等于工厂吗?
 不等,思想源于工厂,可是高于工厂,IOC/DI的思想是 DI+容器
2跟之前的方式有什么不同
 反转。去掉了工厂

   使用IOC/DI容器开发须要改变的思路: 1应用程序不主动建立对象,可是要描述建立他们的方式。 2在程序代码中不直接进行服务的装配,可是要描述哪个组件须要那一项服务,由容器负责将这些装配在一块儿。 也就是说:全部的组件都是被动的,组件初始化和装配都由容器负责,应用程序知识在获取相应的组建后,实现 影响的功能便可。  重点: IOC/DI 是思想,不是纯实现技术。IOD是框架共性,只是控制权转转移,转移到框架,因此不能由于实现了IOC就叫IOC容器。 除了实现IOC外,还要具备DI的功能才叫IOC容器,由于容器除了负责建立并装配组件关系,还须要管理组件的 生命周期。  

相关文章
相关标签/搜索