那些研究了春季框架的人肯定会听到春季IOC(控制逆转)和DI(依赖注射)的两个概念。对于那些新来的春季的人,我总是觉得IOC和DI概念模糊不清。这很难理解。今天,我将与您分享春季框架的一些IOC,并谈论我对春季IOC的理解。
**控制控制,即“控制逆转”不是一种技术,而是设计理念。传统直接由您的对象控制。”,然后让我们深入分析:
●**谁控制着谁和控制的内容:**传统的Java SE程序设计,我们直接通过对象内部的对象创建对象,该对象是该程序积极创建依赖对象的程序;IOC具有一个容器来创建这些对象,即,即对象的创建由IOC容器控制;谁控制谁?当然,IOC容器控制对象;什么是控制的?那是控制外部资源(不仅仅是包括文件等对象)。
●为什么它逆转并逆转了哪些方面:**当有逆转时,就会有正面旋转。传统的应用程序是积极控制对象中的依赖项。它是帮助创建和注入依赖性的容器。为什么它会逆转?因为容器帮助我们找到和注入依赖项,所以对象只被动接受依赖对象,因此它被逆转;什么是逆转?对依赖对象的采集被颠倒了。
使用图形来解释,传统程序设计如图2-1所示,它们正在积极创建相关对象,然后结合:
在IOC/DI容器之后,这些对象不再在客户端类中主动创建,如图2-2所示:
国际奥委会不是一种技术,而是一种思想,是一个以法律为导向的法律,它可以指导我们如何设计宽松的耦合和更好的程序。传统应用程序正在积极创建班级的依赖性,从而导致高高在类之间进行耦合,这很难测试;在IOC容器之后,将创建和搜索依赖性的控制移交给容器。注射组合对象,因此对象和对象是松散的耦合,这也很方便测试,这有利于功能重用。更重要的是,该程序的整个体系结构变得非常灵活。
实际上,国际奥委会对编程带来的最大变化不是来自代码,而是意识形态上的变化。该应用程序最初是老板。无论获得什么资源,都可以采取主动行动,但是在IOC/DI思想中,应用程序变得被动,并被动地等待IOC容器创建和注入所需的资源。
IOC很好地反映了面向对象设计的规则之一-Hollywood Law:“别找到我们,让我们找到您”;也就是说,IOC容器帮助对象找到相应的依赖对象并注入它,而不是由对象积极寻找。
DI依赖性注入,即“依赖注入”:组件之间的依赖关系在运行时由容器确定,即,在组件中,容器动态地注入依赖关系。**依靠注射注射的目的是不要为软件系统带来更多功能,而是为了提高组件重复使用的频率,并为系统构建灵活且可扩展的平台。目标所需的资源以完成我们的业务逻辑,而无需关心特定资源来自何处和实现它。
理解DI的关键是:“谁依赖,为什么需要依靠,谁注入什么,输入””,让我们深入分析它:
●谁取决于谁:当然,应用程序取决于IOC容器;
●**为什么需要依靠:**应用程序要求IOC容器提供对象所需的外部资源;
●谁注射谁:显然,它是IOC容器注入应用程序的对象,该应用程序取决于对象;
●注入的内容:注入对象需要外部资源(包括对象,资源和常数数据)。
IOC和DI之间的关系是什么?实际上,它们是同一概念的不同观点。因为控制和逆转的概念更加模糊(可能只是理解是一个容器控制对象的水平,所以很难想到谁能维持对象关系),因此主人级角色马丁·福勒(Martin Fowler)在2004年在2004年,其他其他名称给出:“依赖注射”。相对于IOC,依赖项注入清楚地描述了“注入对象依赖对IOC容器配置依赖性对象”。
我读了很多有关春季IOC理解的文章。许多人对IOC和DI的解释是晦涩的。无论如何,这是一种不清楚和不清楚的感觉。阅读后,它仍然感到困惑。技术牛特别容易理解。他清楚地解释了IOC(控制逆转)和DI(依赖注射)中的每个单词,并且在阅读它后,它会让人们突然感到开朗的感觉。我相信,对春季框架新手的人应该对IOC非常有帮助。
首先,我想谈论IOC(控制,控制逆转)。这是弹簧的核心,贯穿。负责控制对象的对象的对象。**这是什么意思?简而言之,我们如何找到女友?普遍的情况是,我们去看看有美丽的彩信,然后询问他们的爱好,QQ号码,电话号码,IP号,IP,IQ号码...好吧,要发送它,然后嘿...这个过程是复杂而深刻的,我们必须自己设计和面对每个链接。传统程序也是如此。在一个对象中,如果要使用另一个对象,则必须获得它(从jndi中有一个或查询一个对象)。对象将始终与其他接口或类型相结合。
那么,国际奥委会怎么样?有点像通过婚礼代理商寻找女友。我介绍了我和女友之间的第三方。婚礼代理机构管理了许多有关男女的信息。我可以向婚礼代理商提出一份清单,告诉我我想找到什么样的女友,例如李Jiaxin,像林Xilei这样的人物,像杰伊·周这样的唱歌,像卡洛斯一样超速,像QIUS这样的技术,像Qius这样的技术,像技术一样Qius,像Qi一样,Qi Qi,Qi Qi,Qiius和Qi Qi.daine等技术,然后婚礼机构将根据我们的要求提供MM。我们只需要爱上她并结婚。很明显,如果婚礼机构不符合要求,我们将抛出一个例外。整个过程不再由我自己控制,而是像这样的机构婚礼机构。春季提倡的开发方法。所有类别都将在春季容器中注册,告诉春天您是什么和需要什么,然后在系统运行适当运行时,Spring将运行系统,并主动为您提供想要给您的东西。时间,您还将您带给其他需要您的事物。所有阶级的创建和破坏都由Spring控制,这意味着控制对象的生存周期不再引用其对象,而是Spring。对于特定对象,它用于控制其他对象,现在所有对象都由弹簧控制,因此称为控制逆转。
IOC的重点之一是在系统操作期间动态提供对象所需的其他对象。这是通过DI(依赖项注入,依赖注射)实现的。例如,对象A需要操作数据库。过去,我们总是在A中编写代码以获取连接对象。在春天,我们只需要告诉春天。需要A.A中的连接不需要知道。当系统运行时,Spring将在适当的时间创建连接,然后注入类似的注入,以便每个对象之间的关系完成。依靠连接正常运行,并且将这种连接注入弹簧中,并且依赖注入的名称是这样的。di如何实现?动态生成对象,执行对象的方法,并在运行时更改对象的属性。弹簧通过反射注入。
在理解了IOC和DI的概念之后,一切都将变得简单明了。其余的只是在春季框架中堆积的构件。
在通常的Java应用程序开发中,我们需要实现一个函数或完成至少两个或多个对象进行协作。当不使用弹簧时,每个对象都需要使用他。当合作对象必须像新对象()一样使用语法来创建合作伙伴。恰恰采取主动性来创建,创建对象的主动性和时机是由您自己控制,这将使对象之间的耦合高。使用B,然后A对B有依赖,也就是说,A和B之间存在耦合关系,并且它紧密地耦合在一起,并且是不同的,并且是不同的使用弹簧后。它是在弹簧上完成的,弹簧创建了B对象B,然后将其存储到一个容器中。当A对象需要使用B对象时,弹簧会取出B对象,以在存储对象的容器中使用,然后将其交给A至AObjects使用,例如弹簧的创建方式以及何时将创建对象,一个对象不需要关心这些细节(您什么时候生育,我该如何生育,我不在乎,我可以帮助我工作))我们,两个人可以合作完成他们想完成的工作。
因此,控制逆转IOC(控制倒置)意味着创建对象的控件已转移到传输。IOC容器,它是专门用于创建对象的工厂。您想要什么对象,它给您什么对象。随着IOC容器的变化,原始依赖性消失了,它们都取决于IOC。他们都依靠IOCTHE容器来建立通过IOC容器建立它们之间的关系。
这是我对Spring的IOC **。di(依赖注射)**实际上是IOC的另一句话。马丁·福勒(Martin Fowler)在2004年初的一篇论文中首次提出了di。
对于春季IOC的核心概念,我相信每个正在学习春季的人都会有自己的理解。这种概念的理解没有绝对的标准答案,而仁慈的人则看到了智慧和智慧。