------------------------------------------------------------------------框架
理解IoC/DIspa
1.控制反转 --> 谁控制谁? 控制什么? 为什么叫反转(对应于正向)?哪些方面反转了?为什么须要反转?设计
谁控制谁? --> IoC/DI容器控制应用程序对象
控制什么? --> IoC/DI容器控制对象自己的建立、实例化; IoC/DI容器控制对象之间的依赖关系blog
为什么叫反转(对应于正向)? --> 由于如今应用程序不能主动去获取外部资源了,而是被动等待IoC/DI容器给它注入它所须要的资源,因此称之为反转.生命周期
哪些方面反转了? --> 1.建立对象 2.程序获取资源的方式反了事件
为什么须要反转? --> 1.引入IoC/DI容器事后,体系更为松散,并且管理更有序; 2.类之间真正实现了松散耦合资源
2.依赖 --> 什么是依赖(按名称理解、按动词理解)? 谁依赖于谁? 为何须要依赖? 依赖什么东西?开发
什么是依赖(按名称理解、按动词理解)? --> 依赖(按名称理解):依赖关系; 依赖(按动词理解):依赖的动做容器
谁依赖于谁? --> 应用程序依赖于IoC/DI容器
为何须要依赖? --> 由于发生了反转,应用程序依赖的资源都是IoC/DI容器里面
依赖什么东西? --> 应用程序依赖于IoC/DI容器,依赖IoC/DI容器为它注入所须要的资源。(好比:依赖关系)
3.注入:谁注入于谁? 注入什么东西? 为什么要注入?
谁注入于谁? --> IoC/DI容器注入于应用程序
注入什么东西? --> 注入应用程序须要的外部资源,好比依赖关系
为什么要注入? --> 由于程序要正常运行须要这些外部资源
4.依赖注入和控制反转是同一律念吗?
不是同一律念, 其实它们两个描述的是同一件事件,可是是从不一样的角度来讲:控制反转是从IoC/DI容器的角度;依赖注入是从应用程序的角度
控制反转的描述: IoC/DI容器反过来控制应用程序,控制应用程序锁所须要的外部资源(好比:外部资源)
依赖注入的描述: 应用程序依赖IoC/DI容器,依赖它注入所须要的外部资源。
5.参与者都有哪些?
IoC/DI容器、应用程序
6.IoC/DI是什么?能作什么?怎么作?用在什么地方?
IoC/DI是什么?
IoC:就是使用IoC/DI容器反过来控制应用程序所须要的外部资源,这样的一种程序开发思想。
DI:就是应用程序依赖IoC/DI容器来注入所须要的外部资源,这样一种程序的开发思想。
能作什么? --> 松散耦合对象
怎么作? --> 使用Spring框架,里面有实现好了的IoC/DI容器
用在什么地方? --> 凡是程序里面须要使用外部资源的状况,均可以考虑使用IoC/DI容器
7.什么是外部资源
对于一个类来说,所谓的外部资源,就是指在本身类的内部不能获得或实现的东西,好比说:在类里面须要读取一个配置文件,那么这个配置文件就至关于这个类的外部资源。又好比:A类里面要调用B类,那么对于A类来说B类就是外部资源。
8. IoC容器
简单的理解就是:实现IoC思想,并提供对象建立、对象装配以及对象生命周期管理的软件就是IoC容器。
对IoC的理解:
a. 应用程序无需主动new对象,而是描述对象应该如何被建立
b. 应用程序不须要主动装配对象之间的依赖关系,而是描述须要哪一个服务,IoC容器会帮你装配,被动接受装配
c. 主动变被动,是一种让服务消费者不直接依赖于服务提供者的组件设计方式,是一种减小类与类之间依赖的设计原则
9.使用IoC/DI容器开发须要改变思路
a. 应用程序不主动建立对象,可是要描述建立它们的方式
b. 在应用程序代码中不直接进行服务的装配,可是要描述哪个组件须要哪一项服务,由容器负责将这些装配在一块儿。也就是说:全部的组件都是被动的,组件初始化和专供都是由容器负责,应用程序只是在获取相应的组件后,实现应用的功能便可。