【发布时间】:2013-11-10 00:41:42
【问题描述】:
假设我们在类中的各个字段上使用了@Autowired 注解,并且我们没有编写也可以设置字段的设置器或构造器。
问题 - 访问修饰符应该是什么,private 或 package-private(即没有)?
例如:
public class MyClass {
@Autowired
private MyService myService;
}
对
public class MyClass {
@Autowired
MyService myService;
}
在第一种情况下(private 字段)Spring 使用反射来连接字段,即使它没有设置器。
第二种情况(package-private 字段)允许我们在需要扩展类以进行测试时访问这些字段(例如,设置模拟)。
所以这两种情况都可以正常工作,但哪个更推荐,尤其是在测试方面?
【问题讨论】:
-
如果您的测试框架可以在私有字段中注入模拟,那么就私有化。否则,请使用包保护。无论如何,这无关紧要,除非您担心初级开发人员会从同一个包的另一个类中访问受包保护的字段。
标签: java spring unit-testing private access-modifiers