栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

spring IOC和DI详解

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

spring IOC和DI详解

IOC是什么?

IOC即“控制反转”,控制的什么被反转了?就是:获得依赖对象的方式反转了。

现在有一个场景,我们需要用到一个用户类,同时需要用到与用户类有依赖关系的用户信息类,传统程序设计和使用IOC后的设计有什么区别呢?

下面借两张图来说明这个问题:

图1-1 传统应用程序示意图

在传统程序设计我们肯定需要先创建一个用户类,然后在用户类内部new一个用户信息类,建立它们的依赖关系,两个对象间的耦合度高。

图1-2有IoC/DI容器后程序结构示意图

而在使用IOC容器后,用户类和用户信息类的创建和管理都会交给IOC容器来做,而且在创建用户类时会判断出是否有其他依赖对象需要注入,如何有,则将该依赖对象注入用户类中,这里用户类需要注入的依赖对象就是用户信息类,这样设计能降低对象间的耦合度。

所有的类都会在spring容器中登记,,所有的类的创建、销毁都由 spring来控制,也就是说控制对象生存周期的不再是引用它的对象,而是spring。对于某个具体的对象而言,以前是它控制其他对象,现在是所有对象都被spring控制,所以这叫控制反转。

DI是什么?

spring容器创建实例对象时会根据依赖关系注入依赖对象以及属性,这就是依赖注入。

Spring支持构造函数注入和属性注入。 构造函数注入:在构造函数注入中,我们通过调用类的构造函数,将接口实现类通过构造函数变量传入。 属性注入:属性注入可以有选择地通过Setter方法完成调用类所需依赖的注入。

DI是通过动态代理和反射的方式实现的。
关于反射的概念可以参考:Java反射机制详解

参考文章:
https://www.cnblogs.com/xdp-gacl/p/4249939.html

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/666223.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号