首页 > 解决方案 > 为什么 Spring 的 DI/IoC 被认为比常规的 OO 更解耦?

问题描述

我正在尝试从常规的 OO 背景中学习 spring。

在常规 OO 中,如果您想解耦依赖项。你会这样做

Car car = CarFactory.getCar();

您可以在其中使用 BigCar 和 SmallCar 实现 Car。

在 Spring 中,依赖项通过以下方式解耦

@Autowire
BigCar car;

或通过 XML 配置。

问题是如何更加解耦?在所有 3 种情况下,您要么

  1. 更改工厂中的 1 行代码
  2. 更改@Autowire 下面的 1 行代码
  3. 更改 1 行 XML 代码

标签: springoopdependency-injectioninversion-of-control

解决方案


在春天有一个概念叫做控制反转(IoC)。基本上意味着,

控制反转是软件工程中的一项原则,通过该原则将对程序的对象或部分的控制转移到容器或框架中。

你可以在这里查看https://www.baeldung.com/inversion-control-and-dependency-injection-in-spring

所以使用 spring 我们不是在我们需要的地方创建对象,而是通过通知它应该在哪里创建来将这个责任委托给 spring。在上面的示例中,使用@Autowired。这显然比 OO 设计中的松耦合。


推荐阅读