当前位置:网站首页>什么是依赖注入(DI)
什么是依赖注入(DI)
2022-07-06 23:34:00 【PIKapikaaaa】
DI的全称是Dependency Injection,中文称之为依赖注入。
它与控制反转(IoC)的含义相同,只不过这两个称呼是从两个角度描述的同一个概念。对于一个Spring初学者来说,这两种称呼很难理解,下面我们将通过简单的语言来描述这两个概念。
当某个Java对象(调用者)需要调用另一个Java对象(被调用者,即被依赖对象)时,在传统模式下,调用者通常会采用“new 被调用者”的代码方式来创建对象,如图1所示。这种方式会导致调用者与被调用者之间的耦合性增加,不利于后期项目的升级和维护。
图1 调用者创建被调用者对象
在使用Spring框架之后,对象的实例不再由调用者来创建,而是由Spring容器来创建,Spring容器会负责控制程序之间的关系,而不是由调用者的程序代码直接控制。这样,控制权由应用代码转移到了Spring容器,控制权发生了反转,这就是Spring的控制反转。
从Spring容器的角度来看,Spring容器负责将被依赖对象赋值给调用者的成员变量,这相当于为调用者注入了它依赖的实例,这就是Spring的依赖注入,如图2所示。
图2 将被调用者对象注入调用者对象
边栏推荐
猜你喜欢
人体传感器好不好用?怎么用?Aqara绿米、小米之间到底买哪个
c语言神经网络基本代码大全及其含义
《5》 Table
带你遨游银河系的 10 种分布式数据库
Pytest testing framework -- data driven
Senior programmers must know and master. This article explains in detail the principle of MySQL master-slave synchronization, and recommends collecting
Record a pressure measurement experience summary
Two person game based on bevy game engine and FPGA
JVM(十九) -- 字节码与类的加载(四) -- 再谈类的加载器
照片选择器CollectionView
随机推荐
Addressable pre Download
漏电继电器JOLX-GS62零序孔径Φ100
QT simple layout box model with spring
ScheduledExecutorService定时器
说一说MVCC多版本并发控制器?
JVM (19) -- bytecode and class loading (4) -- talk about class loader again
QSlider of QT control style series (I)
Writing process of the first paper
Is it necessary to renew the PMP certificate?
Dbsync adds support for mongodb and ES
[JS component] custom select
LabVIEW is opening a new reference, indicating that the memory is full
Creation and use of thread pool
Senior programmers must know and master. This article explains in detail the principle of MySQL master-slave synchronization, and recommends collecting
Full link voltage test: the dispute between shadow database and shadow table
高级程序员必知必会,一文详解MySQL主从同步原理,推荐收藏
SQL injection cookie injection
Summary of the mean value theorem of higher numbers
做自媒体视频剪辑,专业的人会怎么寻找背景音乐素材?
Where is NPDP product manager certification sacred?