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

The*_*boy 3 java spring dependency-injection

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

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

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

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

如果我要在实际控制器中指定字段的值,或者如果我要将值注入到控制器bean中,有时我会面临一种情况.

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

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

 private String basePath = "/path/to/velocity/templates";
Run Code Online (Sandbox Code Playgroud)

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

<property name="basePath" value="/path/to/velocity/templates"/>
Run Code Online (Sandbox Code Playgroud)

在我的班上,我会得到这个注入值的getter/setter.

我不知道在哪里划线.

Bri*_*new 7

我通常注入基于:

  1. 是否需要根据环境/部署更改此值(例如,使用PropertyPlaceholderConfiguration).
  2. 我是否需要嘲笑某些东西进行测试.
  3. 是否其他人可能在将来使用此课程,并希望做上述其中一项.

如果你不小心,那么你的配置可以成为大量的注入属性(我更喜欢使用构造函数参数,所以我可以保证正确的实例化,但这是另一个故事).上述指南在限制注射次数的同时可以灵活地进行.