为什么我们不能在春季自动接线静态场

为什么我们不能在Spring bean中自动装配静态实例变量。我知道还有其他方法可以做到这一点,但只是想知道为什么我们不能以下面的方式做到这一点。


例如


@Autowired

public static Test test;


汪汪一只猫
浏览 440回答 3
3回答

子衿沉夜

因为使用静态字段会鼓励使用静态方法。静态方法是邪恶的。依赖项注入的主要目的是让容器为您创建对象并进行连接。而且,它使测试更加容易。一旦开始使用静态方法,就不再需要创建对象的实例,并且测试变得更加困难。同样,您不能创建给定类的多个实例,每个实例都注入不同的依赖项(因为该字段是隐式共享的,并且会创建全局状态-也很邪恶)。

一只萌萌小番薯

根据OOP的概念,如果自动连接静态变量将是不好的设计。静态变量不是Object的属性,而是Class的属性。弹簧自动接线是在对象上完成的,因此我认为设计很干净。您可以将自动有线bean对象部署为单例,并实现与静态定义相同的目的。
打开App,查看更多内容
随时随地看视频慕课网APP