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

存在循环Bean依赖时Spring Bean创建的随机性

郗丰
2023-03-14

共有1个答案

农存
2023-03-14

Spring开始初始化bean的过程,并在此过程中了解循环引用。根据使用的是基于构造函数的自动布线还是基于成员的自动布线,循环引用可能会成功,也可能不会成功。如果循环依赖链中涉及的两个类使用构造函数自动连接或成员自动连接,则可能出现以下情况:

  1. 构造函数自动生成+构造函数自动生成=Bean初始化总是失败
  2. 构造函数自动连接+成员自动连接=失败取决于初始化顺序(可以是随机的)。如果首先初始化具有构造函数自动连接的Bean,则Bean初始化将失败。b.如果首先初始化具有成员自动连接的Bean,则Bean初始化将成功。
  3. 成员自动连接+成员自动连接=Bean初始化将始终成功,即使存在循环依赖

因此,如果您有循环依赖并且自动归入类别(2)中,您可能会随机观察到成功/失败的循环依赖解析。

 类似资料:
  • 问题内容: 我目前正在研究Vaadin春季应用程序。根据应用规范,必须通过查询数据库来完成对用户的身份验证/授权。如何解决这个问题?我正在使用Spring Boot 1.4.2.RELEASE。 更新 :此方法适用于Spring Boot 1.1.x.RELEASE,但是在最新版本中会产生以下错误消息。 原始代码如下所示: 帐户存储库: JdbcAccountRepository: JdbcUse

  • 问题内容: 我有一个关于Eclipse,Wicket,Spring,Hibernate的项目。一切正常,除了:当我尝试 服务变量为空?在我使用此构造的任何其他地方,“ service”都不为null且运行良好。请帮我解决这个问题。 问题答案: @SpringBean仅在Component的任何子类中起作用。 您需要在构造函数中执行以下操作 小门1.4 小门1.5+ 参见“通用IDataProvid

  • 我是C#新手,在我创建的这个随机数猜谜游戏中,我很难理解哪里出错了。我试图在第30行的do time循环中添加一个random.next命令,当我运行程序时,它会说我的猜测太高或太低,我不明白出了什么问题。这是未完成的代码: 如果我删除numberTo猜测=随机。下一个(100)1;代码工作正常,但重复相同的随机数。 请帮忙。

  • 问题内容: 我有一个模块化的maven项目,其中两个模块“ BIZ”和“ EJB”包含如下内容: 如您所见, “ EJB”依赖于“ BIZ”, 因为它使用 MyClassX (实际上,它使用了BIZ的几种类别)。这就是 ImplFactory 使用反射实例化 InterfaceImpl 的原因。问题是 cl.newInstance() 将抛出 ClassCastException, 因为这两个模块

  • 问题内容: 我已经搜索了很多,但是我发现的主要是python中的递归编程示例。因此,问题来了: 我该如何实现? 问题答案: 一切在Python中都是动态的-甚至是类声明。在初始声明之后,没有什么可以阻止您修改类的内容的: 注意:如果您不太熟悉Python,则该关键字仅允许您说“这里什么都没有”-除非A类的空值与本例中的一样空,否则它并不重要!

  • 问题内容: 我有两个文件和,分别定义了两个类和。 直到今天,用于引用该对象的定义,因此我已经做了 在文件中。 但是,到目前为止,我已经为引用该对象的对象创建了一个新方法。 尝试导入时遇到了问题:我尝试了一下,当程序运行并调用了using的方法时,出现了一个未定义的异常。 我该怎么办? 问题答案: 导入Python模块 是一篇很棒的文章,介绍了Python中的循环导入。 解决此问题的最简单方法是将路