IOC/DI
( IoC 和 DI 它们都是对控制反转概念的不同角度描述.)
(1)IOC是什么?
1.IOC(Inversion Of Control 控制反转,不是什么技术,而是一种设计思想.)
Bean:
- 所有可以被spring容器实例化并管理的java类都可以称为Bean.
IOC容器:
- Spring IoC容器目的就是管理Bean,这些Bean将根据配置文件中的Bean定义进行创建;
(它就是一个专门用来创建对象的工厂,你要什么类的对象,它就给你主动实例化创建该类对象)
- 对象之间的依赖关系由IOC容器来建立.
2.为何是反转?
- 有反转就有正转,传统创建对象是由我们自己在new对象中主动控制去直接获取依赖对象,从而导致类与类之间高耦合,
也就是正转,;
- 而现在创建对象的控制权转移到IOC容器,IOC容器主动帮我们查找并将依赖对象传递注入给被依赖对象;
被依赖对象只是被动的接受依赖对象传递,而无需自己主动new,所以是反转.
3.IoC容器工作原理?(xml配置方式)
- a.在.xml配置文件中声明Bean定义也就是为Bean配置元数据.
- b.由IoC容器进行解析元数据: IoC容器的Bean Reader读取并解析配置文件,
根据定义生成BeanDefinition配置元数据对象,IoC容器根据BeanDefinition进行实例化、配置及组装Bean.
- c.实例化IoC容器:由客户端实例化容器,获取需要的Bean.
4.IOC最大的好处是什么?
- 因为把对象生成放在了XML里定义,所以当我们需要换一个实现子类将会变成很简单,只要修改XML就可以了.
- 代码中的每一个Class都可以单独测试,彼此之间互不影响,只要保证自身的功能无误即可.
( 2)DI是什么? (Dependency Injection 依赖注入---IOC的别名)
(被注入对象依赖IoC容器配置依赖对象)
- 系统运行中,IoC容器动态的向某个对象提供它所需要的其他对象.
- 容器通过调用set方法或者构造器来建立对象之间的依赖关系.
注: IOC是目标,DI是手段.
(3)依赖注入的两种方式
1)set方法
step1: 为类添加set方法.
step2: 在配置文件当中,使用<property>元素来配置依赖注入.
( IoC 和 DI 它们都是对控制反转概念的不同角度描述.)
(1)IOC是什么?
1.IOC(Inversion Of Control 控制反转,不是什么技术,而是一种设计思想.)
Bean:
- 所有可以被spring容器实例化并管理的java类都可以称为Bean.
IOC容器:
- Spring IoC容器目的就是管理Bean,这些Bean将根据配置文件中的Bean定义进行创建;
(它就是一个专门用来创建对象的工厂,你要什么类的对象,它就给你主动实例化创建该类对象)
- 对象之间的依赖关系由IOC容器来建立.
2.为何是反转?
- 有反转就有正转,传统创建对象是由我们自己在new对象中主动控制去直接获取依赖对象,从而导致类与类之间高耦合,
也就是正转,;
- 而现在创建对象的控制权转移到IOC容器,IOC容器主动帮我们查找并将依赖对象传递注入给被依赖对象;
被依赖对象只是被动的接受依赖对象传递,而无需自己主动new,所以是反转.
3.IoC容器工作原理?(xml配置方式)
- a.在.xml配置文件中声明Bean定义也就是为Bean配置元数据.
- b.由IoC容器进行解析元数据: IoC容器的Bean Reader读取并解析配置文件,
根据定义生成BeanDefinition配置元数据对象,IoC容器根据BeanDefinition进行实例化、配置及组装Bean.
- c.实例化IoC容器:由客户端实例化容器,获取需要的Bean.
4.IOC最大的好处是什么?
- 因为把对象生成放在了XML里定义,所以当我们需要换一个实现子类将会变成很简单,只要修改XML就可以了.
- 代码中的每一个Class都可以单独测试,彼此之间互不影响,只要保证自身的功能无误即可.
( 2)DI是什么? (Dependency Injection 依赖注入---IOC的别名)
(被注入对象依赖IoC容器配置依赖对象)
- 系统运行中,IoC容器动态的向某个对象提供它所需要的其他对象.
- 容器通过调用set方法或者构造器来建立对象之间的依赖关系.
注: IOC是目标,DI是手段.
(3)依赖注入的两种方式
1)set方法
step1: 为类添加set方法.
step2: 在配置文件当中,使用<property>元素来配置依赖注入.