- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
对IOC和DI的理解
对IOC和DI的理解首先说一下什么是IOC和DI,IOC是Inversion?of?Control(控制反转)的简写,DI是Dependency?Injection(依赖注入)的简写,martinfowler对IOC的解释为:“Inversion?of?control?is?a?common?characteristic?of?frameworks,?so?saying?that?these?lightweight?containers?are?special?because?they?use?inversion?of?control?is?like?saying?my?car?is?special?because?it?has?wheels.” ? ?我想对这一概念进行一个个人的阐述,以方便我的理解。控制反转,从字面意思来看,就是控制权由被动变主动又变为被动,或被动变主动又变为被动。从这个角度来说,IOC就变得非常容易理解了。 ??举个例子:你的主管要求你做一件事情,这个时候就存在这么几个过程, ??主管命令你做事情(这个时候主动权在主管,你是被动的) ??你接到命令做事情(这个时候主题是你,你是主动的,控制权在你手里) ??你完成事情(这个时候主题依然是你,控制权在你手里) ??报告主管做完事情(主动权又叫交到主管手里了) ??上面的整个过程就完成了一次IOC,从上面可以看出,IOC的基本思想是控制权的转换过程。 ??举个代码的例子: ??假如有Class?A,Class?B,在A内部会初始化一个B,调用B的一个方法DoMethod ??public?Class?B ??{ ??public?void?DoMethod() ??{ ??///?do?somthing; ??} ??} ??public?Class?A ??{ ??public?void?Excute() ??{ ??B?b?=?new?B(); ??b.DoMethod(); ??} ??} ??假如在Main函数中如下执行: ??A?a?=?new?A(); ??a.Excute(); ?从这两行代码来看,事实上也存在一个IOC的过程,a——b——a,理解的关键点就在A的内部调用Excute的时候,方法b.DoMethod的执行。 理解了IOC,我们再看一下DI,从上面A调用B我们可以看出,在初始化一个A的实例时,也必须实例化一个B,也就是说如果没有B或者B出了问题,A就无法实例化,这就产生了一种依赖,就是A依赖B,这种依赖从设计的角度来说就是耦合,显然它是无法满足高内聚低耦合的要求的。这个时候就需要解耦,当然解耦有很多种方法,而DI就是其中一种。不管任何一种解耦方法,都不是说使A和B完全没有关系,而是把这种关系的实现变得隐晦,不那么直接,但是又很容易实现,而且易于扩展,不像上面的代码那样,直接new一个B出来。那为什么我们总是把IOC和DI联系到一起是因为DI的基本思想就是IOC,而体现IOC?思想的方法还有另外一个,那就是Service?Locator,这个方法好像涉及到的很少。 ??DI,依赖注入,从字面意思就可以看出,依赖是通过外接注入的方式来实现的。这就实现了解耦,而DI的方式通常有三种 ??构造器注入 ??属性设置器注入 ??接口注入(我感觉接口注入是同时存在于上两种注入方式的,而不应该独立出来) ??以上的阐述只是为了先让我们能对IOC和DI有一个感性的理解,那么IOC真正解决的问题是什么呢?我们讲了那么多主动被动的问题,那我们是从什么视角来看待这个问题的呢?你是主动,而我不是主动呢?这就需要一个参照物,这个参照物是什么呢?就是容器,在容器中来体现主动和被动。“用讲,就是由容器控制程序之间的关系,而非传统实现中,由程序代码直接操控。这也就是所谓”控制反转“的概念所在:控制权由应用代码中转到了外部容器,控制权的转移,是所谓反转,这是通常对IOC的一个解释。从容器的角度来看主动和被动,和由容器来控制程序之间的关系,应该是相通的,是一个意思。到这里我们就应该基本明白了,IOC要解决的就是程序之间调用的一个问题,它应该是一个层面的东西,是一个中心,就像一支乐队的指挥,而程序就是乐器,通过指挥来协调各种乐器,来演奏出美好的音乐来Resource在Sping框架中起着不可或缺的作用,Sping框架使用Resource装载各种资源,这些资源包括配置文件资源、国际化属性文件资源等。下面我们来了解一下Resource的具体实现类。
ByteArrayResource:二进制数组表示的资源,二进制数组源可以在内存中通过程序构造。
ClassPathResource:类路径下的资源,资源以
您可能关注的文档
- 论文排版要求(发表型论文).doc
- 2017届重庆市南开中学高三7月月考英语试题.doc
- 34. Delivery交货.doc
- 光电专业专外词汇.docx
- 基于DSP的单相开关电源的设计.doc
- 抗体酶及其应用2016年.docx
- 郑州市2017年中招一模猜题卷及答案.doc
- On_Semi_NCL30051输入90-265_Vac_60W离线LED驱动方案.docx
- 药理学名词解释大全(修订).docx
- (浅谈传感器在汽车控制中应用).doc
- 2025河北石家庄平山县从自收自支事业单位人员中公开招聘社区工作人员15名备考题库及一套完整答案详解.docx
- 2025河北石家庄平山县从自收自支事业单位人员中公开招聘社区工作人员15名备考题库及一套参考答案详解.docx
- 课题1 物质的变化和性质 第2课时 化学性质和物理性质(导学案)初中化学人教版(2024)九年级上册第一单元 走进化学世界(原卷版).docx
- 课题2 化学实验与科学探究 第1课时 常见仪器和试剂取用(导学案)初中化学人教版(2024)九年级上册第一单元 走进化学世界(解析版).docx
- 课题2 化学实验与科学探究 第1课时 常见仪器和试剂取用(导学案)初中化学人教版(2024)九年级上册第一单元 走进化学世界(原卷版).docx
- 2025河北石家庄平山县从自收自支事业单位人员中公开招聘社区工作人员15名备考题库及1套完整答案详解.docx
- 云南新兴职业学院单招《数学》考前冲刺测试卷附参考答案详解(A卷).docx
- 云南新兴职业学院单招《数学》题库及参考答案详解(考试直接用).docx
- 云南新兴职业学院单招《数学》练习题附完整答案详解(名师系列).docx
- 课题2 化学实验与科学探究 第2课时 加热、连接和洗涤仪器(导学案)初中化学人教版(2024)九年级上册第一单元 走进化学世界(原卷版).docx
原创力文档


文档评论(0)