IoC和DI的概念曾经让我非常困惑,所以我阅读了很多不同人的观点和文章,最终得出了结论。因此,据我理解,这些主题是...
控制反转是Java中一种用于创建松耦合且更易于维护应用程序的技术,而依赖注入则是实现该概念(技术)的一种方式之一。
控制反转容器在运行时从Java类中注入依赖项,以创建松散耦合的应用程序。
这是正确的吗?如果我错了,请纠正我...
IoC和DI的概念曾经让我非常困惑,所以我阅读了很多不同人的观点和文章,最终得出了结论。因此,据我理解,这些主题是...
控制反转是Java中一种用于创建松耦合且更易于维护应用程序的技术,而依赖注入则是实现该概念(技术)的一种方式之一。
控制反转容器在运行时从Java类中注入依赖项,以创建松散耦合的应用程序。
这是正确的吗?如果我错了,请纠正我...
以下是实现Java编程中松耦合的模式
依赖注入(Dependency Injection,DI):
依赖注入是一种模式,用于创建对象的实例,让其他对象能够在不知道在编译时将使用哪个类来提供功能或简单地注入属性到对象的方式。我们有三种类型的依赖注入:
Spring仅支持构造函数注入和Setter/Getter注入。
控制反转(Inversion Of Control,IOC):
将控制权交给容器来创建和注入应用程序所依赖的对象实例,即不再使用 new
操作符创建对象,而是让容器代为创建。控制反转依赖于依赖注入,因为需要一种机制来激活提供特定功能的组件。
这两个概念一起工作,可以编写更加灵活、可重用和封装的代码。因此,它们是设计面向对象解决方案的重要概念。
依赖注入示例
以前我们会这样写代码:
Public MyClass{
DependentClass dependentObject
/*
At somewhere in our code we need to instantiate
the object with new operator inorder to use it or perform some method.
*/
dependentObject= new DependentClass();
dependentObject.someMethod();
}
使用依赖注入,依赖注入器将为我们去掉实例化。
Public MyClass{
/* Dependency injector will instantiate object*/
DependentClass dependentObject
/*
At somewhere in our code we perform some method.
The process of instantiation will be handled by the dependency injector
*/
dependentObject.someMethod();
}
将控制权交给其他对象(例如容器)进行实例化和注入的过程可以称为控制反转。
您可以在我的答案中阅读有关依赖注入和IOC的更多信息:- 您可以在此处找到这些概念的优势和应用。
IoC是一个通用术语,它指的是框架调用由应用程序提供的实现,而不是应用程序调用框架中的方法。
DI是IoC的一种形式,通过构造函数/设置器/服务查找将实现传递到对象中,对象将“依赖”这些实现以正确地运行。
DependentClass1 dependentObject1
和DependentClass2 dependentObject2
,那么这两个类都是由依赖注入器实例化的。 - SAMUELDependentClass1 dependentObject1
和DependentClass2 dependentObject2
都实现了接口ABCInterface
,那么当我在ABCInterface
上使用@Autowired
时,容器会采用谁的定义? - ankit