假设我们@Autowired
在类中的各个字段上使用了注解,并且我们没有编写也可以设置字段的 setter 或构造函数。
问题 - 访问修饰符应该是什么,private
或者package-private
(即没有)?
例如:
public class MyClass {
@Autowired
private MyService myService;
}
对比
public class MyClass {
@Autowired
MyService myService;
}
在第一种情况下(private
字段),Spring 使用反射来连接字段,即使它没有设置器。
如果我们需要扩展类以进行测试,则第二种情况(package-private
字段)允许我们能够访问这些字段(例如,设置模拟)。
所以这两种情况都很好,但哪个更推荐,特别是在测试方面?