Spring的IoC(控制反转) 、DI(依赖注入)
Spring的IoC(控制反转) 、DI(依赖注入)
作用:为了解决对象之间的耦合度过高的问题。
Ioc—Inversion of Control ,即“控制反转”,不是什么技术,而是一种 设计思想 。在Java开发中,Ioc意味着将你设计好的对象交给IOC容器控制,而不是传统的在你的对象内部直接控制。
1. Java面向对象
Java面向对象方法设计中,底层实现都是由多个个对象组成的,所有的对象通过彼此的合作,最终实现系统的业务逻辑。
图中描述的就是这样的一个齿轮组,所有的齿轮相互啮合在一起,协同工作,共同完成某项任务。我们可以看到,在这样的齿轮组中,如果有一个齿轮出了问题,就可能会影响到整个齿轮组的正常运转。对象之间的耦合关系是无法避免的,经常会出现对象之间的多重依赖性关系,必然会出现牵一发而动全身的情形。
2. 控制反转(IOC)
IOC原理实现:借助于“第三方”实现具有依赖关系的对象之间的解耦
3.IOC的另一种表达方式:依赖注入(DI)
DI是依赖注入,IOC的另一种表达方式:组件以一些预先定义好的方式(如:setter方法、构造器)接收来自容器的资源注入。创建对象实例时,为这个对象注入属性值或其它对象实例。
使用方法:
- 属性注入(最常用)
1.通过set方法注入Bean的属性值或依赖的对象。
2.name属性:制定Bean属性set方法后的属性名。
3.value属性值:可以使(value)子节点指定属性值。
- 构造器注入
1.通过构造器注入Bean属性值或依赖对象,它保证Bean实例在实例化后可以使用。
2.构造器注入在一样。
4.控制反转(IOC)和依赖注入(DI)的区别和联系
联系:控制反转(IOC)和依赖注入(DI)都是是spring核心思想的描述。
区别:
1.它们是spring核心思想的不同方面的描述。
2.依赖注入和控制反转是对同一件事情的不同描述,描述的角度不同。
依赖注入是从应用程序的角度在描述,可以把依赖注入描述完整点:应用程序依赖容器创建并注入它所需要的外部资源;
控制反转是从容器的角度在描述,描述完整点:容器控制应用程序,由容器反向的向应用程序注入应用程序所需要的外部资源。
5.Spring的IOC实现步骤解析:
- 定位到外部配置的Bean的资源文件。创建并且载入DefaultListableBeanFactory(即BeanFactory),根据DefaultListableBeanFactory创建XMLBeanDefinitionReader,用于读取xml配置文件信息。
- 解析外部配置的Bean的资源文件。创建BeanDefinitionDelegate代理类
- 初始化IOC容器。
- 装配Bean。
- 通过高级IOC容器(上下文)getBean获取程序需要的Bean。
6.什么是Bean循环依赖
Bean循环依赖其实就是对象的相互依赖关系,循环引用,也就是两个或者两个以上的bean互相持有对方,最终形成闭环。比如A依赖于B,B依赖于C,C又依赖于A。
7.Spring怎么解决循环依赖
不要使用基于构造函数的依赖注入,可以通过以下方式解决:
- 在字段上使用@Autowired注解,让Spring决定在合适的时机注入
- 用基于setter方法的依赖注入。
- 建立关系时把A、B、C创建的时候就丢入集合类。
spring中bean配置和bean注入请参照:
https://www.geek-share.com/detail/2672472441.html
Spring容器、Spring对象及SpringIOC请参照:
https://www.geek-share.com/detail/2733290982.html
- Spring IOC(控制反转)和DI(依赖注入)
- Spring---IOC(控制反转)和DI(依赖注入)
- Spring的IOC(控制反转)和 DI(依赖注入)机制
- Java面试-Spring IOC(控制反转)和DI(依赖注入)
- spring IOC(控制反转)和DI(依赖注入)以及三种依赖注入方式的比较
- Spring.net step by step——依赖注入(DI)和控制反转(IOC)
- 【Spring】Spring的IOC(控制反转)/DI(依赖注入)原理(二):模拟Spring加载配置文件
- 依赖注入(DI)和控制反转(IOC)的详细讲解 spring容器(spring注解实现,而不是xml配置文件)
- 【Spring】Spring的IOC(控制反转)/DI(依赖注入)原理(三):Spring启动加载配置文件源码分析
- Spring IoC(控制反转)和DI(依赖注入)的理解
- (转)关于spring的两个概念:IoC(控制反转) ,DI(依赖注入)
- Spring学习3—控制反转(IOC)Spring依赖注入(DI)和控制反转(IOC)
- Spring_01 spring容器、控制反转(IOC)、依赖注入(DI)
- Spring 使用注解的方式实现IOC和DI(控制反转和依赖注入)
- Spring-IOC(控制反转)+DI(依赖注入)
- Spring的Ioc(控制反转)和DI(依赖注入)
- Spring的IOC(控制反转)和DI(依赖注入)
- Spring IoC(控制反转)和DI(依赖注入)的理解
- Spring 深入理解IOC(控制反转)和DI(依赖注入)
- 如何理解spring中的IOC(控制反转)、DI(依赖注入)?