我应该为@Autowired

2022-09-04 06:35:31

我在我的项目中使用了Spring 3.0.x。我目前的做法举例如下:@Autowired


 @Autowired
 private SomeType someMemberVariable;

使用二次定位器方法是否更好和/或更可取?通过setter,我的意思是以下内容:


 private SomeType someMemberVariable;

 @Autowired
 private void setSomeMemberVariable(SomeType newValue)
 {
  someMemberVariable = newValue;
 }

我理解可变与不可变的 setter,这超出了这个问题的范围。


答案 1

我在使用时没有使用 setter - 它添加了样板代码。@Autowired

每当我需要在单元测试中设置依赖项时,我都会使用 - 作为 setter,它在编译时并不安全,但我并没有遇到太多麻烦。ReflectionTestUtils.setField(..)

作为旁注,如果使用spring 3.0,您可以开始使用而不是@Inject@Autowired


答案 2

我更喜欢使用 setter 和 getters,因为它允许您在不在 Spring 上下文中运行对象时手动连接对象(即,在单元测试中设置模拟)。


推荐