Answers:
因为使用静态字段会鼓励使用静态方法。静态方法是邪恶的。依赖项注入的主要目的是让容器为您创建对象并进行连接。而且,它使测试更加容易。
一旦开始使用静态方法,您就不再需要创建对象的实例,并且测试变得更加困难。同样,您不能创建给定类的多个实例,每个实例都注入不同的依赖项(因为该字段是隐式共享的,并且会创建全局状态-也是邪恶的)。
@BeforeClass
在SpringJUnit4ClassRunner中使用,并且让该方法@Autowired
在测试中访问bean ,那么基本上可以。真烦人。
根据OOP的概念,如果自动连接静态变量将是不好的设计。
静态变量不是Object的属性,而是Class的属性。弹簧自动接线是在对象上完成的,因此我认为设计很干净。您可以将自动有线bean对象部署为单例,并实现与静态定义相同的目的。
通过此解决方案,您可以在春季自动接线静态场。
@Component
public class TestClass {
private static Test test;
@Autowired
public void setTest(Test test) {
TestClass.test = test;
}
}