Java Spring框架正在毫无理由地破坏单例

Java Spring框架正在毫无理由地破坏单例,java,spring,Java,Spring,我有一个非常奇怪的问题: 我有四台生产服务器,它们都以相同的方式配置,运行相同的spring应用程序。由于我对应用程序进行了巨大的重构,这四个服务器中的两个无法初始化应用程序上下文,因为NPE是由丢失的bean引起的,该bean应该是自动连接的,但为空 我将org.springframework的日志记录切换到debug以查看任何提示。我看到的第一件事是,在两台崩溃的服务器上,我看到以下条目: org.springframework.beans.factory.support.DefaultSi

我有一个非常奇怪的问题:

我有四台生产服务器,它们都以相同的方式配置,运行相同的spring应用程序。由于我对应用程序进行了巨大的重构,这四个服务器中的两个无法初始化应用程序上下文,因为NPE是由丢失的bean引起的,该bean应该是自动连接的,但为空

我将org.springframework的日志记录切换到debug以查看任何提示。我看到的第一件事是,在两台崩溃的服务器上,我看到以下条目:

org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.destroyBean(DefaultSingletonBeanRegistry.java:488) Retrieved dependent beans for bean 'creditServiceImpl': [payPalService, payPalRecurringQueueService]
在此条目之后,还有12个条目销毁单个bean,然后一个条目销毁所有剩余bean:

org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.destroySingletons(DefaultSingletonBeanRegistry.java:433) Destroying singletons in org.springframework.beans.factory.support.DefaultListableBeanFactory@3085e275: defining beans [[...lots of beans...]]; root of factory hierarchy
之后,hibernate会话关闭,所有内容都关闭,我得到的唯一错误是:

ERROR [localhost-startStop-1] org.springframework.web.context.ContextLoader.initWebApplicationContext(ContextLoader.java:307) Context initialization failed
我不明白为什么spring在销毁之前会毫无差错地销毁所有的豆子。有人知道我怎样才能解决这个问题吗?将应用程序重新构建到一切正常的状态不是一个选项,因为太多的更改都必须在一次提交中发生

谢谢你的帮助

编辑:在将日志设置为跟踪后,我发现这是由于循环依赖关系和之后的NPE造成的,错误是在破坏了上下文之后记录的,这让我很困惑


我仍然感到困惑,因为问题只出现在4台服务器中的2台上,但似乎初始化bean的顺序在不同的服务器上有所不同,这也让我感到困惑

通常在关闭spring应用程序的过程中会销毁bean。我敢打赌,导致应用程序崩溃的实际错误不会显示在日志文件中。这通常发生在初始化spring上下文时。正如@Funtik所指出的,肯定还有另一个异常导致了这种情况。您可能希望启用跟踪日志记录来获取更多的信息。还要检查服务器日志,而不仅仅是应用程序日志,以查看是否存在错误。