当前位置: 首页 > 面试题库 >

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

申博厚
2023-03-14
问题内容

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

例如

@Autowired
public static Test test;

问题答案:

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

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



 类似资料:
  • 为什么我们不能在Springbean中自动连接静态实例变量呢。我知道还有另一种方法可以实现这一点,但我只是想知道为什么我们不能用下面的方法来实现。 e. g.

  • 问题内容: 我试图找到为什么不能将类创建为静态类的原因?喜欢: 问题答案: 在Java中,关键字通常将一个方法或字段标记为不存在,而不是每个类实例一次,而是一次。一个类一旦存在就已经存在,因此实际上,所有类都以这种方式是“静态的”,并且所有对象都是该类的实例。 确实对 内部 类具有含义,这是完全不同的:通常,内部类实例可以访问与其绑定的外部类实例的成员,但是如果内部类为,则它没有这样的引用并且可以

  • 问题内容: 该主题充分说明了这一点-为什么不能在接口中声明静态方法的原因是什么? 上面的代码给了我以下错误(至少在Eclipse中):“接口方法ITest.test()的非法修饰符;仅允许public&abstract”。 问题答案: 这里有一些问题。第一个问题是声明静态方法而不定义它的问题。这是之间的区别 和 由于Espo提到的原因,第一个是不可能的:你不知道哪个实现类是正确的定义。 Java

  • 问题内容: 编辑: 从Java 8开始,接口中现在允许使用静态方法。 例子如下: 当然这行不通。但是为什么不呢? 可能的问题之一是,当你致电时会发生什么: 在这种情况下,我认为它应该只调用一个空方法(即{})。所有子类都将被强制实现static方法,因此在调用static方法时它们都很好。那为什么不可能呢? 编辑:我想我正在寻找比“因为这就是Java的方式”更深的答案。 有特定的技术原因为什么不能

  • 伙计们,我有一个简单但令人讨厌的问题。据我所知,基本上意味着,对于该类的每个实例,这个方法将是相同的,如果我们改变它,这将改变该类的每个实例,它也被称为类方法。那么,如果我有一个类,它实现了某种格式的方法,让我们说: 为什么不能设置为静态?因为该类的每个实例的格式都是相同的。。。?