2014-09-05 68 views
0

我是使用Spring的Java团队的初级工程师。我们一直在指导实例变量的Autowired Setters,而不是Autowiring实际的实例变量。对于我们为什么这样做,我有些困惑,这样做的优势是什么,以及以这种方式处理依赖管理的可能性不足?Spring中的AutoWired Setter而不是AutoWired实例变量

+1

你可以找到答案你的问题在这里: http://stackoverflow.com/questions/3746574/where-is-the-autowired-annotation-supposed-to-go-on-the-property-或最实现方法具 – 2014-09-05 11:38:06

回答

1

从我(在Java EE中居然3年)的一些意见:

优点:

  • 您可以添加setter方法方法的一些额外的验证或逻辑
  • 你能避免使用反射在适用于某些特殊情况的junit测试
  • 安装人员可以被覆盖以便您可以注入其他东西

缺点:

  • 在大多数情况下,因为你注入其他服务这种验证是没有必要的
  • 你必须有大量无用的getter和setter方法的代码。例如在我的代码中,我通常每个服务使用大约5个DAO类,所以这是10个额外的写法,这给我60个额外的行。
  • 大多数情况下,在应用程序初始化后,您不需要注入其他DAO或服务。
  • 以后不能使用setter/getters,因为在春天你正在使用接口而不是具体实现。在接口上设置setter和getter是一种不好的做法。

我个人更喜欢实例变量或构造函数注入。但这与服务有关。我不会说使用setter更好。它有着不同的目的。