一尘不染

为什么在spring不能自动为静态场接线?

spring

为什么我们不能在Spring bean中自动装配静态实例变量。我知道有另一种方法可以实现这一目标,但只想知道为什么我们不能以以下方式做到这一点。

例如

@Autowired
public static Test test;

阅读 346

收藏
2020-04-11

共2个答案

一尘不染

因为使用静态字段会鼓励使用静态方法。静态方法是邪恶的。依赖项注入的主要目的是让容器为你创建对象并进行连接。而且,它使测试更加容易。

一旦开始使用静态方法,就不再需要创建对象的实例,并且测试变得更加困难。同样,你不能创建给定类的多个实例,每个实例都注入了不同的依赖项(因为该字段是隐式共享的,并且会创建全局状态-也是邪恶的)。

2020-04-11
一尘不染

因为当类加载器加载静态值时,仍未加载Spring上下文。因此,类加载器不会正确地将静态类注入Bean中,并且会失败。

2020-04-11