一分钟总结Spring的IOC和DI
admin
2024-04-18 06:05:40
0

IOC Inverse of control 控制反转 

IoC(控制反转)就是将程序中原来 new 对象,交给spring创建,从spring工厂获取对象,使用spring来负责控制对象的生命周期和对象间的关系.

Spring所倡导的开发方式——所有的类都会在spring容器中登记,告诉spring你是个什么东西,你需要什么东西,然后spring会在系统运行到适当的时候,把你要的东西主动给你,同时也把你交给其他需要你的东西。所有的类的创建、销毁都由spring来控制,也就是说控制对象生存周期的不再是引用它的对象,而是spring。对于某个具体的对象而言,以前是它控制其他对象,现在是所有对象都被spring控制,所以这叫控制反转。

IOC是什么 用的目的 什么是控制反转(举例:生活中、代码)

IOC是控制反转,主要用于:1、对象创建 2、依赖管理 目的就是为了解耦合,使代码具有更高的扩展性和维护性。

什么是控制反转?

控制反转是一种通过描述(XML或注解)并通过第三方生产或获取特定对象的方式。

在传统模式中,对象由程序员主动创建,控制权在程序员手中。如果用户需求变更,程序员就要修改对应的代码,,修改一次需求,或多或少会造成代码的修改,这个问题就是耦合性过高引起的。

IoC的主要思想是借助一个“第三方”来拆开原本耦合的对象,并将这些对象都与“第三方”建立联系,由第三方来创建、操作 这些对象,进而达到解耦的目的。

IoC的思想最核心的地方在于,资源不由使用资源的双方管理,而由不使用资源的第三方管理,

生活中:1. 如共享单车 只拥有他的使用权,而不是所有权

2. 如你把买房子的需求交给房产中介 而不是自己搭建 控制权在房产中介手上(控制反转),而建房子的开放商是服务提供者,房产中介根据需求把房子提供给小明,就是依赖注入

3.如在相亲网站 也是提需求 相亲网站按照你的要求给你找对象

正转: 如拥有所有权 直接耦合 A类使用B类 A类创建B类对象

反转:A类使用B类的步骤:Spring管理B类对象 A类找Spring要B类对象,B类对象的所有权属于Spring A类只拥有使用权 对B类的控制权交给Spring

那么到底是“哪些方面的控制被反转了呢?”

获得依赖对象的过程被反转了”。控制被反转之后,获得依赖对象的过程由自身管理变为了由IOC容器主动注入。

实现IOC的方法:注入。

所谓依赖注入,就是由IOC容器在运行期间,动态地将某种依赖关系注入到对象之中。

DI Dependency Injection 依赖注入

“谁依赖谁,为什么需要依赖,谁注入谁,注入了什么”

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

  • 为什么需要依赖:应用程序需要IoC容器来提供对象需要的外部资源;

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

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

IoC的一个重点是在系统运行中,动态的向某个对象提供它所需要的其他对象。这一点是通过DI(依赖注入)来实现的。

比如对象A需要操作数据库,以前我们总是要在A中自己编写代码来获得一个Connection对象,有了spring我们就只需要告诉spring,A中需要一个Connection,至于这个Connection怎么构造,何时构造,A不需要知道。在系统运行时,spring会在适当的时候制造一个Connection,然后像打针一样,注射到A当中,这样就完成了对各个对象之间关系的控制。A需要依赖Connection才能正常运行,而这个Connection是由spring注入到A中的,依赖注入的名字就这么来的。那么DI是如何实现的呢?Java 1.3之后一个重要特征是反射(reflection),它允许程序在运行的时候动态的生成对象、执行对象的方法、改变对象的属性,spring就是通过反射来实现注入的。

IOC和DI的关系


IOC和DI虽然定义不同,但他们所做的事情都是一样的,就是都是用来实现对象解耦的。

不同之处是IOC是一种设计思想,而DI是一种具体的实现技术
 

相关内容

热门资讯

鸡械绿洲最强角色有哪些 鸡械绿... 鸡械绿洲最强角色究竟有哪些呢?在这款独立塔防游戏当中,玩家会以俯视角参与到射击挑战内,同时内置的大量...
蛋仔派对蛋仔飞车端午玩法介绍 ... 端午节快到了,蛋仔派对这次准备的活动挺丰富的,龙舟竞渡玩法马上就要来了,还有不少免费皮肤可以领。今天...
头像制作软件推荐 高人气免费头... 日常管理社交账号时,用户常需定期更新头像以保持形象新鲜感。一款操作便捷、功能全面且完全免费的头像制作...
查食品配料表的App推荐 20... 面对琳琅满目的零食与预包装食品,普通消费者常因看不懂专业配料表而困扰。成分名称晦涩、添加剂种类繁多、...
漫画APP下载推荐 2026热... 如今,漫画已成为大众日常休闲的重要方式之一,但不少读者常面临资源分散、画质参差、更新滞后、操作繁琐等...
录音软件推荐 好用的录音App... 在日常沟通、学习与办公场景中,高质量的音频录制需求日益增长。除了系统自带的录音工具,许多用户倾向于选...
软件工程专业必备工具推荐 适合... 软件工程专业学生日常学习与实践的核心工具,离不开高效、稳定且功能丰富的编程辅助软件。面对大量代码编写...
手机管家APP下载安装指南 2... 安卓用户在日常使用中,常会关注手机管家类应用的下载与安装方式。新机初期运行流畅,但随着使用时间延长,...
思维导图软件推荐 2026年好... 日常学习笔记梳理、工作任务分解、家庭开支规划等场景中,思维导图工具已成为提升逻辑性与执行效率的重要辅...
一键录音App推荐 实用免费的... 日常工作中需要留存语音资料,如电话沟通、线下会议、课堂讲解等场景,用户普遍倾向于选择操作便捷、兼容性...