【问题标题】:Error creating bean with name and Singleton bean creation not allowed使用名称创建 bean 时出错,并且不允许创建单例 bean
【发布时间】:2013-02-07 16:35:12
【问题描述】:

当我通过 JUnit 测试用例

执行代码时出现以下异常

org.springframework.beans.factory.BeanCreationNotAllowedException:创建名为“somarFactory”的bean时出错:当该工厂的单例处于销毁状态时,不允许创建单例bean(不要在销毁方法实现中从BeanFactory请求bean !)

有人可以建议可能是什么问题吗?

【问题讨论】:

  • 尽管当前不允许创建 bean(例如,在 bean 工厂的关闭阶段),但在请求 bean 的情况下会引发此异常。
  • 能否请您添加更多细节以更好地理解它?
  • 能否请您在这里指导:stackoverflow.com/questions/53959982/…

标签: java spring


【解决方案1】:

Go to this thread

我想你也有同样的问题。 通过设置JAVA_HOME 路径解决了 并将您的 JDK 更新到版本 7 并尝试重新启动您的服务器..(solution)

我认为这可以解决您的问题..

【讨论】:

  • 我发现问题不在于 JAVA_HOME,但这可能是真的。我的问题是由于测试用例中的失败导致调度程序关闭并且正在访问后来的 bean。
  • 链接似乎死了,这就是为什么通常在本网站之外引用答案是不好的做法
  • @AndersMetnik 将JAVA_HOME 和 JDK 更新到 1.7 解决了这个问题。在我提到的链接中也有。 :)
  • @Kathir 提到它不是 JAVA_HOME 问题。在 Spring 集成测试中,有一种情况会触发上下文关闭,其中一些基于线程的执行尝试访问 bean。
  • http://forums.alfresco.com/forum/installation-upgrades-configuration-integration/installation-upgrades/singleton-bean-creation提供的链接打不开。
【解决方案2】:

检查您是否有多个 tomcat 的实例。
如果是这种情况,请关闭所有实例,然后仅打开一个实例。
希望对你有帮助

【讨论】:

  • 你用这个提示救了我的命!我正在运行 Windows8,我第一次遇到了一个“分离”进程(tomcat),它没有在 TaskManager 的任何地方列出(尽管我的 Tomcat8 作为服务运行)。我打开了 VisualVM,它显示了一个我用“taskkill /pid 10752 /f”(f switch =force)杀死的 tomcat 实例/pid。糟糕的M$
  • 祝你亲爱的朋友快乐
【解决方案3】:

就我而言,
我正在使用多个线程来调用 bean 方法
在完成所有线程之前
调用 context.close()
生成并抛出此异常
删除 context.close
我的问题解决了。
希望有用

【讨论】:

    【解决方案4】:

    @Transactional 在我的情况下使用它解决了多个事务之间的事务冲突。

    @Transactional(propagation = Propagation.REQUIRED, readOnly = false)
    

    我正在使用 Spring Boot + Spring Data

    【讨论】:

      【解决方案5】:

      我在调试集成测试中的应用程序时遇到此错误,尝试从 Spring Data Repository 调用 find 方法。

      我的测试代码使用了@Async@Scheduled。经过一番研究,我disabled这两个特性在我的spring集成测试中得到了解决。

      【讨论】:

      • 如果需要这些注释怎么办?
      • 您是否尝试在测试中使用这些注释?注释仅在测试中被禁用
      【解决方案6】:

      如果您有一个在提供范围内但在运行时不可用的依赖项,您也可以得到此异常。

      【讨论】:

        【解决方案7】:

        就我而言,我有:

        <dependency>
            <groupId>org.springframework.boot</groupId>-->
             <artifactId>spring-boot-starter-tomcat</artifactId>-->
            <scope>provided</scope>-->
        </dependency>
        

        在我的 pom.xml 中的一个新项目中。我删除了它,现在它可以工作了。

        【讨论】:

          【解决方案8】:

          我也遇到了这个错误,但在我的情况下,我在错误消息的末尾发现,这与具有相同 @requestmapping 值的两个端点有关,我希望它有所帮助:)

          【讨论】:

            【解决方案9】:

            在完成异步线程以测试方法运行之前完成测试时,我遇到了该错误。

            修复是为了确保在线程作业完成之前测试不会完成。

            【讨论】:

              猜你喜欢
              • 2020-02-23
              • 1970-01-01
              • 2019-05-26
              • 2021-11-18
              • 1970-01-01
              • 1970-01-01
              • 2016-02-19
              • 1970-01-01
              • 1970-01-01
              相关资源
              最近更新 更多