java - 我应该为@Autowired 提供一个 setter 吗

标签 java spring

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


 @Autowired
 private SomeType someMemberVariable;

使用 setter 方法是否更好和/或更受欢迎?我的意思是:


 private SomeType someMemberVariable;

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

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

最佳答案

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

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

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

关于java - 我应该为@Autowired 提供一个 setter 吗,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4147519/

相关文章:

java - 如何获取存储在ArrayList<HashMap<key,value>>中的值?

java - 我可以从编译时注释向类添加方法吗?

java String.replaceAll 正则表达式问题

java - 断言网络元素不存在 - 快速解决方案?

java - 静态引用 WebSecurityConfigurerAdapter 来获取随机 CSP 随机数哈希?

java - Spring 中的 Apache Camel RouteBuilder 不会启动 configure()

java - 仅当条件满足时才显示表格的多列

java - Spring mockMvc 在我的测试中不考虑验证

java - 无法处理请求 [GET http ://localhost:8080 ]: Response status 404 Spring, RESTful,thymeleaf

java - 如何仅在 mvc 层排除验证属性(并保留数据库层)?