gpt4 book ai didi

java - 在 BeanInstantiationException (Tomcat) 之后禁止 Spring 启动

转载 作者:搜寻专家 更新时间:2023-10-31 20:31:03 24 4
gpt4 key购买 nike

对于我目前正在工作的项目,要求在 spring 无法初始化某些 bean 时禁用要启动的 webapp 上下文(在初始化期间调用 web 服务,因此可能会崩溃)。

然而,当一个 bean 在初始化期间抛出任何异常时,它看起来像这样:

org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'latestAdsRepository' defined in file [...]: Instantiation of bean failed; nested exception is org.springframework.beans.BeanInstantiationException: Could not instantiate bean class [...]: Constructor threw exception; nested exception is java.io.IOException: SHUT DOWN NOW!!
...
Caused by: org.springframework.beans.BeanInstantiationException: Could not instantiate bean class [...]: Constructor threw exception; nested exception is java.io.IOException: SHUT DOWN NOW!!

但是上下文启动并且对无法启动的 bean 的所有引用都是 null。不用说,这会导致到处都是各种错误的 Nullpointer 异常。特别是因为这个 bean 对于 webapp 非常重要。

所以我需要一种方法来显式地告诉 Spring 如果某个 bean 无法初始化,则此 webapp 无法启动。然而,System.exit(1) 不是一个选项,因为此 Tomcat 服务器上还有其他 Web 应用程序。

有什么想法吗?

最佳答案

据我所知,默认情况下,当 Spring 无法实例化 bean 时,如果异常通过启动监听器传播到 servlet 容器,则上下文启动失败。

您可以使用@Required 注解将某个注入(inject)点标记为强制注入(inject)点。

关于java - 在 BeanInstantiationException (Tomcat) 之后禁止 Spring 启动,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3634868/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com