Spring依赖注入和控制反转

简介: Spring依赖注入和控制反转

问题1:什么是依赖注入和控制反转

对象依赖:有A类,B类,在A类中B类以形参的方式作为A类中的某个方法的参数,这个时候我们就可以认为A类B类是相互依赖的,即A类依赖于B类,当然在Java,C++中体现为:局部变量、方法/函数的参数或者是对静态方法的调用。

1.Java应用程序,通过各个对象协助组成,对象彼此之间相互依赖,这种方式缺乏将基本构建块组织成一个连贯的整体的方法(图1)。
在这里插入图片描述
相关学习链接:
Java语言中的关联与依赖关系
java对象间的关系(依赖,关联,组合,聚合)
Spring如何解决循环依赖问题

2.Spring 框架控制反转(IoC)组件通过提供一种形式化的方法来将不同的组件组成一个可以正常使用的应用程序,从而解决了这一问题(图2)。
在这里插入图片描述
在这里插入图片描述
3.Ioc也称为依赖注入(DI),这是一个过程,在此过程中,对象通过构造函数参数,工厂方法的参数或在对象实例从工厂方法构造或返回后设置的属性来定义其依赖关系即与它们一起使用的其他对象。然后,容器在创建Bean时注入那些依赖项。
在这里插入图片描述
回答上面的问题什么是控制反转和依赖注入:
下面的内容来源于:【第二章】 IoC 之 2.1 IoC基础 ——跟我学Spring3
4.控制反转

Ioc—Inversion of Control,即“ 控制反转”,不是什么技术,而是一种 设计思想。在Java开发中,Ioc意味着将你设计好的对象交给容器控制,而不是传统的在你的对象内部直接控制。

对于控制反转你需要搞懂以下三个问题:
4.1 谁控制谁

传统Java SE程序设计,我们直接在对象内部通过new进行创建对象,是程序主动去创建依赖对象,这时候就是程序控制对象
而IoC是有专门一个容器来创建这些对象,即由Ioc容器来控制对象的创建,这时候就是Ioc容器控制对象

4.2 控制什么

主要控制了外部资源获取(不只是对象包括比如文件等)。

4.3 正转和反转:

正转:传统应用程序是由我们自己在对象中主动控制去直接获取依赖对象,对象主动接受依赖对象,也就是正转

反转:由容器来帮忙创建及注入依赖对象,对象被动的接受依赖对象,所以是反转

5.依赖注入

DI—Dependency Injection,即“ 依赖注入”:是组件之间依赖关系由容器在运行期决定,形象的说,即由容器动态的将某个依赖关系注入到组件之中。依赖注入的目的并非为软件系统带来更多功能,而是为了提升组件重用的频率,并为系统搭建一个灵活、可扩展的平台。通过依赖注入机制,我们只需要通过简单的配置,而无需任何代码就可指定目标需要的资源,完成自身的业务逻辑,而不需要关心具体的资源来自何处,由谁实现。

对于依赖注入你需要搞懂以下四个问题:
5.1 谁依赖于谁

谁依赖于谁:当然是应用程序依赖于IoC容器;

5.2 为什么需要依赖

应用程序需要IoC容器来提供对象需要的外部资源;

5.3 谁注入谁

很明显是IoC容器注入应用程序某个对象,应用程序依赖的对象;

5.4 注入了什么

就是注入某个对象所需要的外部资源(包括对象、资源、常量数据)

最后对于控制反转和依赖注入我觉得狂神的理解方式挺不错的:
在这里插入图片描述
关于本部分的代码实例,你可以通过这篇博文进一步加深印象:Spring-IOC本质

相关文章
|
1月前
|
开发框架 Java Spring
Spring依赖注入以及使用建议
Spring依赖注入以及使用建议
30 0
|
2月前
|
XML Java 程序员
Spring的依赖注入
Spring的依赖注入
|
4月前
|
XML Java 程序员
Spring基础篇:依赖注入
Spring基础篇:依赖注入
|
4月前
|
XML Java 数据格式
深入理解 Spring IoC 和 DI:掌握控制反转和依赖注入的精髓
在本文中,我们将介绍 IoC(控制反转)和 DI(依赖注入)的概念,以及如何在 Spring 框架中实现它们。
69 0
|
2月前
|
Java Spring
Spring5深入浅出篇:Spring中ioc(控制反转)与DI(依赖注入)
Spring5深入浅出篇:Spring中ioc(控制反转)与DI(依赖注入)
|
3月前
|
Java API Spring
Spring6-IoC(Inversion of Control)控制反转和DI(Dependency Injection)依赖注入,手动实现IOC
Spring6-IoC(Inversion of Control)控制反转和DI(Dependency Injection)依赖注入,手动实现IOC
|
4月前
|
XML Java 数据格式
Spring注解开发管理第三方bean及依赖注入
Spring注解开发管理第三方bean及依赖注入
55 0
|
4月前
|
前端开发 Java API
Spring Boot之Spring MVC基于注解的控制器(RequestMapping注解类型 重定向与转发 依赖注入)
Spring Boot之Spring MVC基于注解的控制器(RequestMapping注解类型 重定向与转发 依赖注入)
45 0
|
1月前
|
Java 数据库连接 API
【Spring】1、Spring 框架的基本使用【读取配置文件、IoC、依赖注入的几种方式、FactoryBean】
【Spring】1、Spring 框架的基本使用【读取配置文件、IoC、依赖注入的几种方式、FactoryBean】
49 0
|
4月前
|
XML Java 数据格式
手写spring 框架——第二篇(依赖注入)
手写spring 框架——第二篇(依赖注入)
41 0