博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
spring --(2)IOC和DI理解
阅读量:6564 次
发布时间:2019-06-24

本文共 1149 字,大约阅读时间需要 3 分钟。

hot3.png

IOC,即控制反转,它是一种设计思想。

举个示例:我们都知道,在java程序中,每个业务逻辑至少需要两个及以上的对象来协作完成,传统的做法是,对象A在使用它的依赖对象时,自己先new object(),然后new 一个依赖对象B,然后再操作A的方法,当然对象B作为方法的参数。我们会发现:对象之间的耦合度比较高,当工程比较大时,这不是一个好现象。IOC的思想是:由spring容器来管理 对象之间的依赖关系,对象只需要关注自己的逻辑业务就行。
如下是更加通俗的解释:IOC,就是spring负责管理对象的生命周期和对象之间的关系。举例,我们在淘宝上买一本书(例如:《spring入门》,xx著作,xx年出版,等等条件),通常的情况是,我们是搜索书名,然后点进去看是不是xx著作的,如果是的话,再看是不是xx年出版的,接着……。这个过程是比较繁琐花时间的,在程序上的做法就是我们自己设计和编码每一个环节,即在对象A(搜索条件:书名)中使用对象B(排除条件:xx著作),就必须new A()对象,依赖类B(xx著作)和类C(xx年出版)来完成任务。那么IOC是怎么完成的呢,即在用户和淘宝之间引入了第三者(官方称之为 工厂类),它是一个条件工具,用户只需要向该工具中输入自己的条件(spring入门、xx著作、xx年出版),然后该工具根据用户的条件进行一系列的操作(官方:由spring初始化类、管理类之间的依赖关系),最后得出该用户所需要的书。更加智能点,用户设置好条件,每次启动系统后,都像用户推送该用户所需要的书,这就是控制反转,即原本应该是由用户来控制的,现在反过来由spring控制,用户只需要结果就行。
DI,即依赖注入。在spring中,系统启动的时候,spring需要处理对象的初始化和对象之间的依赖关系,这个依赖关系就是通过DI来实现的。列举实例:比如对象A需要操作数据库,即对象A依赖数据库对象,原来的做法是,系统启动后,new A()对象,然后在类A中写代码来获得connection对象。spring的做法是:系统启动之前,A告诉spring,需要一个connection对象,(官方:即在spring的配置文件中,先配置好类A和connection类),启动系统后,spring主动向类A推送connection对象,类A不需要知道connection对象是何时被创建的,只需要关注自己的业务,使用connection对象连接数据库就行。那么,DI是如何实现的呢?java 1.3之后有个重要的特性是反射,它允许程序在运行时动态的生成对象、执行对象的方法、设置对象属性的初始值。

转载于:https://my.oschina.net/u/2312022/blog/717997

你可能感兴趣的文章
Laravel5.5 使用第三方Vendor添加注册验证码
查看>>
06- Linux下sublime下载与使用
查看>>
前端文摘:Web 开发模式演变历史和趋势
查看>>
将图片序列转化为视频文件
查看>>
jQuery的文档操作***
查看>>
CODING Pages 服务全面升级,更快更稳更可靠!
查看>>
js 小数取整,js 小数向上取整,js小数向下取整
查看>>
从头到尾彻底理解KMP
查看>>
mysql 自定义函数与自定义存储过程的调用方法
查看>>
vue-cli3.0
查看>>
window.location.replace vs window.location.href
查看>>
CVPR 2018:阿里提出应用 LocalizedGAN 进行半监督训练
查看>>
美国科技巨头试图掀起一场悄无声息的应用革命
查看>>
「人物特写」工程院院士谭建荣:马云不是制造业的杀手,工业机器人也不是救命良药...
查看>>
被劫持的wordpress.com账户被用来感染站点
查看>>
哄宝宝入睡不再发愁,福特发布Max Motor Dreams智能婴儿床
查看>>
PHP用星号隐藏部份用户名、身份证、IP、手机号等实例
查看>>
分享一下最近看的东西
查看>>
《大数据、小数据、无数据:网络世界的数据学术》一 第2章 何为数据 2.1 引言...
查看>>
WatchStor观察:2008年存储大事记
查看>>