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

如果spring singleton bean与另一个bean有依赖关系,它们是否会按照创建它们的相反顺序被销毁?

姬和歌
2023-03-14

这是一个关于Spring默认行为的问题。假设我有一个名为BeanA的单例bean,它有一个与名为Beanb的单例bean的构造函数依赖关系。为了满足这种依赖性,必须在BeanA之前创建BeanB。如果两个bean都实现了DisposableBean接口,我希望destroy方法的调用顺序与创建bean的顺序相反,但是我在文档中看不到它。我找到的最好的文档是DependsOn注释(https://docs.spring.io/spring-framework/docs/current/javadoc-api/org/springframework/context/annotation/DependsOn.html),但它没有提到不使用DependsOn时的行为。

编辑:正如我在下面的评论中提到的:我已经尝试过了,在我的测试中,它与预期的一样工作。BeanA在Beanb之前被销毁。我想要一些文件或类似的知道,这是总是情况虽然。

共有1个答案

盖高畅
2023-03-14

经过测试和查看Spring源代码(例如M.Deinum在评论中提到的DefaultSingletonBeanRegistry)之后,我发现两个单例bean,其中一个依赖于另一个,实际上会按照创建它们的相反顺序销毁它们。当我想到它时,我很难想象它如何以另一种方式工作。如果豆子不按相反的顺序销毁,就会造成很多问题。例如,在应用程序关闭期间,一个bean可以尝试使用另一个已经被销毁的bean。不幸的是,我仍然没有在文档中找到对该行为的任何确认。

 类似资料:
  • 根据逻辑,我需要实现两个,如果它们以相同的“相对”顺序具有相同的元素,则它们被认为是相等的。 举个例子,以下一对列表被认为彼此相等: 只要遵守相对顺序,就可以认为它们是平等的。 作为反例,这两个不相等: 导致 和 交换到位。 所以,基本上我发现这很有挑战性,因为这不是顺序完全重要的情况,也不是顺序完全不重要的情况。在这种情况下,我会使用普通的< code>list1.equals(list2)方法

  • 谁能帮我弄清楚这里的问题是我用于StringArray的代码吗?

  • 我有从不同提供程序类提取消息的辅助线程。每个提供程序类添加/获取内部队列的消息。每个提供者只满足一个solace队列,而solace使用者将消息添加到队列的提供者。 多个工作人员可以接收提供程序的消息,处理它们,然后发送消息的ack(下面的message.commit()方法执行ack)。 情景 null null 提供程序类 //有一组工作线程可以读取这些队列

  • 本文向大家介绍如果MySQL中的值相同,UPDATE是否会覆盖它们的值,包括了如果MySQL中的值相同,UPDATE是否会覆盖它们的值的使用技巧和注意事项,需要的朋友参考一下 不,如果值相同,MySQL UPDATE将不会覆盖它们。让我们首先创建一个表- 使用插入命令在表中插入一些记录- 使用select语句显示表中的所有记录- 这将产生以下输出- 以下是更新值的查询。设置的值已存在于该特定列中,

  • JavaBean和BeanInfo之间有什么关系吗?我阅读了各种帖子/问题,以及关于JavaBean的内容。有人提到,Bean是一个遵循某些规则的常规类(私有数据成员、getter()、setters()、实现Serializabe接口……)。 我正在翻阅《Java完全参考,第8版》一书,在“Java豆子”一章中遇到了豆子信息。Java豆子和豆子信息有什么关系? 尽管我试图在各种帖子上找到,但我仍

  • 问题内容: 我正在尝试专业地了解Cookie和会话。我知道,当浏览器连接到服务器时,服务器会“询问”浏览器,以在客户端浏览器cookie文件夹中将“cookiessid”粘贴为cookie。 现在我们有了“ phpsessid”,如果客户端进入服务器,浏览器将向服务器发送“phpsessid”,服务器将查看tmp文件夹,如果有匹配项,它将加载用户具有的所有数据这个客户,但我对此过程有些困惑。 如果