
Spring的核心依赖注入(DI)和控制反转(IOC)
发布日期:2021-05-16 13:53:43
浏览次数:10
分类:精选文章
本文共 878 字,大约阅读时间需要 2 分钟。
Spring Core
Spring的核心模块是一个容器,通过IOC或DI的方式来管理实例。Spring将每个实例都看作是一个Bean对象,通过工厂模式来创建对象,将创建的对象保存在IOC容器中。当需要使用到这个对象时,通过getBean()方法来获取该对象,并且对象是以单例的形式存在。容器的工作模式
ApplicationContext接口在工程启动时读取resources下的.xml文件,获取需要管理的Bean实例。通过BeanFactory创建需要管理的Bean实例。业务调用时通过getBean方法从工厂中获取需要的实例来调用目标方法。容器中管理的Bean实例默认是单例。控制反转(IOC)
为什么有控制反转
控制反转是为了降低对象间的耦合度。我们所涉及的多个对象之间相互依赖,类似于齿轮一样,一旦一个崩溃,整个系统都会崩溃。而IOC相当于一个第三方进行协调,齿轮之间不再相互依赖,而是都依赖于第三方。为什么叫控制反转
以图1为例,A工作的完成依赖于B,A在初始化或运行到某个状态节点时,需要使用到B。无论是创建还是使用B,控制权都在A这里。而在引入了IOC后,当A需要B时,A告知“第三方”,那么第三方就会去主动创建一个B注入到A所需要的地方。对比两个过程,可以发现,A获得B的过程,从主动变成了被动,创建B的控制权在IOC手中,也就是控制反转了。依赖注入(DI)
什么是依赖
如图1所示,A的运行需要使用到B,我们就说A依赖于B。什么是依赖注入
依旧以图1为例,A依赖于B,但A并不主动创建依赖,而是通过外部传入对象的形式来设置依赖。主要有三种方式:构造器注入、setter方法注入、接口注入。IOC和DI
IOC和DI实际上描述的是同一件事实(对象实例化及依赖关系维护),并为的是同一个目的(降低程序耦合度),只是两者的角度不同。 - IOC站在对象的角度,容器进行对象实例化和管理实例。 - DI站在容器的角度,使容器将对象依赖的其他对象注入。 - IOC是一种解耦合的思想,而DI是这种思想的一种实现方式,是一个涉及模式。发表评论
最新留言
不错!
[***.144.177.141]2025年04月19日 12时14分11秒
关于作者

喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
msfvenom的使用&免杀&外网渗透
2019-03-12
HTTP/2 协议详解
2019-03-12
使用MySQLTuner-perl对MySQL进行优化
2019-03-12
2018年3月最新的Ubuntu 16.04.4漏洞提权代码
2019-03-12
亚马逊aws文档语法错误
2019-03-12
spark概述
2019-03-12
JavaScript 知识梳理[一] 变量类型,浅拷贝,深拷贝
2019-03-12
Python3的修改
2019-03-12
Linux kernel pwn --- CSAW2015 StringIPC
2019-03-12
2020-05-31 py执行时超时控制
2019-03-12
一段强大的shellcode
2019-03-12
双链表相加问题
2019-03-12
配置jdk的环境变量
2019-03-12
echo命令的颜色及同行显示控制
2019-03-12
懒人HTML5笔记-1
2019-03-12
两台服务器http方式共享yum软件仓库
2019-03-12
ThreadLocal源码分析解密
2019-03-12
编译android源代码(aosp)
2019-03-12
IDEA 找不到 Persistence窗口解决办法
2019-03-12