Spring应用程序的各个方面的dependency injection?

我正在研究Spring作为一个Web框架,但是我需要一些帮助来了解DI。

在运行时在容器中构造的对象的概念是一个新概念。

我只是想知道这将如何反映在一个大型应用程序中,我是否有一些模块正在进行更高度耦合的工作或者是否应该在运行时初始化每个对象?

这对我来说似乎有点密集,我的意思是说例如我有一个CSV文件数据挖掘应用程序,它每行删除数据 – 每行数据封装在我自己的一个CSVRow对象中进行处理或其他任何事情。 只要Excel文件可以上载到服务器,就会实例化这些对象。 我不知道我需要创造多少?

我似乎有点失落,任何清晰度,概述或一些指导将非常感激。

提前致谢!

我会试着简单地说:

  • 对具有逻辑的无状态类使用dependency injection(业务逻辑,持久性逻辑,前端逻辑)
  • 对值对象使用new

从广义上讲,应用程序由一组实现业务逻辑的类组成。
通常,每个对象都负责获取所需对象的引用(以及此对象的依赖项)。
我认为这很明显会导致:
1)紧密耦合的类
2)代码很难测试,因为每个对象都实例化它所依赖的特定类,如果需要进行更改,则必须修改代码。
因此,使用dependency injection,对象不会实例化依赖对象本身,但“外部组件”在对象创建时提供依赖性,即将依赖项注入对象。
因此,在您的示例中,您的想法是,您可以拥有例如Spring实例化的CsvRow对象(及其所有依赖项),并在需要时获取对象。 也可以通过更改配置切换到例如CsvRow2对象(另一个实现)

您不需要将DI用于CSV行抽象。 获得文件后,当您开始解析文件时,您的代码可以随时创建CSVRow。 你不需要连接它们。

如果你愿意,你当然可以。 您将获取您的applicationContext并按名称获取bean。 如果CsvRow具有您希望Spring为您管理的依赖项,您可能希望这样做。

我认为Spring是创造“单身人士”的一种方式。 当我想保证应用程序中只有一个类的实例时,使用Spring来创建它。 但是,它不是一个具有静态INSTANCE字段或类似INSTANCE的传统单例,而是一个POJO,它包含您需要的任何构造函数/设置器。 Spring会在运行时为您创建实例,并确保只创建一次。