何时何时不使用IOC /依赖注入?

时间:2010-10-19 17:56:27

标签: java spring dependency-injection

我正在使用几个Spring MVC Web应用程序,我使用getter / setter依赖注入并在我的 app-servlet.xml 文件中配置我的所有bean。

我相信我遵循惯例,我将大部分属性和bean注入我的控制器bean,例如我的DAO和我在 applicationContext.xml 中指定的其他bean或者在 app-servlet.xml

随着我的应用程序变得越来越复杂和越来越大,这些文件中的bean已经填充了更多正在注入的属性。

我的问题是,行在哪里,或者应该注入什么的约定,以及应该在控制器中指定为实例字段/变量的内容。

如果我要在实际控制器中指定字段的值,或者我要将值注入到控制器bean中,有时候我遇到了这种情况。

例如,我正在使用力度模板库来发送我的电子邮件。我的Velocity模板的目录有一条路径。我面临着以下其中一种情况。

在我的控制器中,我可以指定值

 private String basePath = "/path/to/velocity/templates";

或者在我的Controller bean中,我可以将相同的值注入该控制器

<property name="basePath" value="/path/to/velocity/templates"/>

在我的课堂上,我会为这个注入的值设置getter / setter。

我不确定在哪里划线。

2 个答案:

答案 0 :(得分:7)

我通常注入:

  1. 是否需要针对每个环境/部署更改此值(例如,使用PropertyPlaceholderConfiguration)。
  2. 我是否需要嘲笑某些东西进行测试。
  3. 将来是否有其他人可能会使用此课程,并希望执行上述任何一项课程。
  4. 如果你不小心,那么你的配置可以成为大量的注入属性(我更喜欢使用构造函数参数,所以我可以保证正确的实例化,但这是另一个故事)。上述指南适用于限制注射次数,同时允许灵活性。

答案 1 :(得分:4)

不要预先计划“灵活性”。通常你不需要它。

到时候你真的需要它,然后重构你的代码。