当前位置: 首页 > 知识库问答 >
问题:

为什么我们不能在Spring自动连接静电场?

万知
2023-03-14

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

e. g.

@Autowired
public static Test test;

共有3个答案

金承嗣
2023-03-14

根据面向对象的概念,如果静态变量自动配置,将是糟糕的设计。

静态变量不是对象的属性,而是类的属性。Spring自动布线是在物体上完成的,在我看来,这使设计更简洁。可以将auto wired bean对象部署为singleton,并实现与静态定义相同的功能

须彭亮
2023-03-14

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

一旦你开始使用静态方法,你就不再需要创建一个对象实例,测试就困难多了。你也不能创建一个给定类的几个实例,每个实例都有不同的依赖关系被注入(因为这个字段是隐式共享的,并且创建全局状态——也是邪恶的)。

丁业
2023-03-14

因为当类加载器加载静态值时,Spring上下文还不一定加载。所以类加载器不会正确地将静态字段注入bean中,并且会失败。

 类似资料:
  • 问题内容: 为什么我们不能在Spring bean中自动装配静态实例变量。我知道有另一种方法可以实现这一目标,但只想知道为什么我们不能以以下方式做到这一点。 例如 问题答案: 因为使用静态字段会鼓励使用静态方法。静态方法是邪恶的。依赖项注入的主要目的是让容器为你创建对象并进行连接。而且,它使测试更加容易。 一旦开始使用静态方法,就不再需要创建对象的实例,并且测试变得更加困难。同样,你不能创建给定类

  • 当我编写一些spring代码时,我使用了带有class和annotation-config的Spring4。我已经声明一个bean将接口实现为组件。我正在尝试制作另一个bean来依赖于它的接口时间。但它不起作用,因为spring抛出一个错误,在该名称中找不到bean。我想这可能是因为只靠和实体类的自动电线工作,但我不知道为什么它会这样设置?有人能解释为什么依赖注释不允许类型自动连接到接口吗? 简单

  • 问题内容: 使用JDBC连接池工具(如DBCP或c3p0)有什么好处? 如果只有 一个* 用户的 小型CRUD 应用程序,我们是否可以将 一个 连接会话创建为一个 单例 ? * PS :我正在构建一个带有小型数据库(5个表)的小型后端应用程序。 问题答案: 从Jon Skeet的答案到连接和语句池的好处是什么?: 创建到数据库服务器的网络连接是(相对)昂贵的。同样,要求服务器准备SQL语句(相对)

  • 和我的配置类: 1)AppConfig。 2)AppInitializer: 不幸的是同样的结果: 找不到依赖项得[Kamienica.Service.CustomUserDetailsService]类型得合格bean:需要至少1个具有此依赖项自动候选资格得bean.依赖项注释:{@org.SpringFramework.Beans.Factory.Annotation.AutoWired(re

  • 在我的springbootapp中,我有以下存储库:- 当我运行这个应用程序时。我收到了这个错误:- 启动ApplicationContext时出错。要显示条件报告,请在启用“调试”的情况下重新运行应用程序。2020-12-24 21:09:15 - 应用程序启动失败 说明: com中构造函数的参数0。如何使用Java。演示。存储库。RevisionRepository需要“org”类型的bean