为什么我们不能在Spring bean中自动装配静态实例变量。我知道还有其他方法可以做到这一点,但只是想知道为什么我们不能以下面的方式做到这一点。例如@Autowiredpublic static Test test;
3 回答
largeQ
TA贡献2039条经验 获得超7个赞
因为使用静态字段会鼓励使用静态方法。静态方法是邪恶的。依赖项注入的主要目的是让容器为您创建对象并进行连接。而且,它使测试更加容易。
一旦开始使用静态方法,就不再需要创建对象的实例,并且测试变得更加困难。同样,您不能创建给定类的多个实例,每个实例都注入不同的依赖项(因为该字段是隐式共享的,并且会创建全局状态-也很邪恶)。
暮色呼如
TA贡献1853条经验 获得超9个赞
根据OOP的概念,如果自动连接静态变量将是不好的设计。
静态变量不是Object的属性,而是Class的属性。弹簧自动接线是在对象上完成的,因此我认为设计很干净。您可以将自动有线bean对象部署为单例,并实现与静态定义相同的目的。
- 3 回答
- 0 关注
- 353 浏览
添加回答
举报
0/150
提交
取消