春天它有多大帮助

时间:2015-10-15 05:10:19

标签: spring dependency-injection

我有一个班级

getContentPane().removeAll();

所以这里我自动装配了messageService,这样每当对象ob MessageServiceHelper被实例化时,它就会自动将依赖的messageService注入到MessageServiceHelper中。如果我编写了一些其他类来创建MessageService实例并调用setter方法,我可以实现同样的功能。

现在可以提出的一点是,我们已经将依赖项解析逻辑转移到了其他地方,并且该代码与MessageService的实例化相结合,如果某些实现被更改,那么我将不得不更改该类但是使用spring也是如果我必须改变实现,我必须改变我之前给出的元数据。

所以我的问题是与DI有什么不同?关于DI的最强点是什么?

2 个答案:

答案 0 :(得分:1)

简而言之,元数据更改是可取的,它可以配置更高层的抽象而不是应用程序代码的更改。然后可配置的更高层可重复使用,您的下层应用程序代码很容易测试。依赖注入是着名的SOLID设计原则中最古老的核心设计原则之一。这个设计原则已经融入了很多框架 - Spring是Java世界中最受欢迎的DI传播者之一。已经有很多好文章可以理解DI的必要性 - 您可以在WikipediaMicrosoft库中阅读它们。是的,那么Martin Fowler网站上很少有文章能够深入了解herehere

答案 1 :(得分:0)

依赖注入的重点是重用。正确地编写代码可以在运行时注入多个实现。

这对于要在不修改对象的情况下传递模拟对象而不是实际对象的单元测试特别有用。通过将依赖项移到代码之外并注入它,您可以在不修改代码的情况下测试代码。

它还允许分离关注点。如果对象的创建是一个复杂的事情,您不必将该代码放在使用它的类中。其他代码或类可以进行创建,只需将其传递到您的类中,不再需要担心它的创建方式。所以把它移到外面是一个优势。想想使用框架创建的复杂对象。好的例子包括实例化数据库驱动程序或数据库会话。

还有其他特定情况,重用是实用的,但我会说这些是我在Web应用程序和业务代码中看到的主要内容。