2011-06-01 95 views
3

我正在研究Spring作为一个Web框架,但是我需要一些帮助让我的头部围绕DI。春季应用程序的每个方面的依赖注入?

运行时在容器中构建对象的概念就是这样一个新概念。

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

这对我来说似乎有点紧张,我的意思是说,例如我有一个CSV文件数据挖掘应用程序,每行删除数据 - 每行数据封装在我自己的CSVRow对象之一进行处理或其他。只要Excel文件可能上传到服务器,就会实例化这些对象。我不知道我需要创建多少个?

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

在此先感谢!

回答

1

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

你当然可以,如果你想。你可以抓住你的applicationContext,并按名称获取bean。如果CsvRow具有您希望Spring为您管理的依赖关系,那么您会希望这样做。

3

广义上讲,应用程序由实现业务逻辑的类集合组成。
通常,每个对象都负责获取它所需对象的引用(以及此对象的依赖关系)。
我认为这是明显的是,这将导致:
1)紧耦合类
2)代码难以测试,因为每个对象实例化特定类别这取决于,如果需要有一个变化时,必须修改代码。
因此,使用依赖注入时,对象本身不会实例化依赖对象,但“外部组件”在对象创建时提供依赖关系,即将依赖关系注入对象。
因此,在你的例子中,想法是你可以有一个例子,由Spring实例化的CsvRow对象(以及它的所有依赖),并在需要时获取对象。也可以通过只是改变你的配置

4

切换到例如CsvRow2对象(另一种实现方式),我会尽量把它简单地说:

  • 使用依赖注入对于具有逻辑无国籍类(业务逻辑,持久逻辑,前端逻辑)
  • 使用new的值对象
1

我觉得春天,以此来打造“单身”。当我想保证应用程序中只有一个类的实例时,请使用Spring创建它。但是,它不是一个传统的单身人士,而是一个静态的INSTANCE字段或类似的东西,它是一个POJO,可以与你需要的任何构造函数/设置器一起使用。 Spring在运行时为你创建实例,并确保创建只发生一次。