Java Spring引导:尝试从@PostConstruct方法引发自定义RunTimeException失败
基本上,我的代码如下。考虑到这是代码的“测试”状态。最初的问题是对另一个类的init()调用,该类抛出了一个已检查的异常。此抛出被try/catch块捕获,然后应用程序在尝试创建异常时失败。为了清晰起见,所有这些都被删除了,因为问题出在“MyCustomRuntimeException”创建中Java Spring引导:尝试从@PostConstruct方法引发自定义RunTimeException失败,java,spring,spring-boot,runtimeexception,postconstruct,Java,Spring,Spring Boot,Runtimeexception,Postconstruct,基本上,我的代码如下。考虑到这是代码的“测试”状态。最初的问题是对另一个类的init()调用,该类抛出了一个已检查的异常。此抛出被try/catch块捕获,然后应用程序在尝试创建异常时失败。为了清晰起见,所有这些都被删除了,因为问题出在“MyCustomRuntimeException”创建中 @Component public class ClassName { public ClassName() { //minor, non problematic operations.
@Component
public class ClassName {
public ClassName() {
//minor, non problematic operations.
}
@PostConstruct
public void init() {
throw new MyCustomRuntimeException("AAAAAAAH");
}
}
MyCustomRuntimeException的定义如下:
public class MyCustomRuntimeException extends RuntimeException {
public MyCustomRuntimeException (String message) {
super(message);
}
}
而且,在创建使用该类的类时,我得到了一个“UnsatifiedPendencyException”。控制台指向抛出新的MyCustomRuntimeException的那一行,我真的不知道发生了什么
另外,“MyCustomRuntimeException”一开始是一个常规异常,但我看到了这一点。我还尝试抛出一个标准的RunTimeException,但没有成功
所以,我在这里一无所知。关于为什么我不能抛出这个异常有什么想法吗?上下文中的每个bean都需要正确创建。当发生错误时,bean的创建将停止/失败,并且上下文(或者换句话说,您的应用程序)将不会启动 由于创建
ClassName
bean是因为另一个bean需要它,因此会得到一个unsatifiedPendencyException
。在构造ClassName
之后,它将调用ClassName
bean的@PostConstruct
,由于异常而失败。因此,不会创建实例,因此会出现未满足的PendencyException
未满足的PendencyException
的根本原因是您自己的初始值设定方法引发的异常 上下文中的每个bean都需要正确创建。当发生错误时,bean的创建将停止/失败,并且上下文(或者换句话说,您的应用程序)将不会启动
由于创建ClassName
bean是因为另一个bean需要它,因此会得到一个unsatifiedPendencyException
。在构造ClassName
之后,它将调用ClassName
bean的@PostConstruct
,由于异常而失败。因此,不会创建实例,因此会出现未满足的PendencyException
未满足的PendencyException
的根本原因是您自己的初始值设定方法引发的异常 我已经测试过,可以在@postconstruct方法中的spring启动项目中抛出RuntimeException(或自定义异常)。我认为您必须关注“未满足的费用例外”及其“原因”部分。您预计会发生什么?由于这个异常,您的bean无法被构造,那么依赖于这个bean的另一个bean无法获得对这个bean的依赖,因为它从未被创建过?所以我看不出有什么问题,它实际上是正常工作的。@M.Deinum啊,你说得对。我误解了Spring是如何处理bean创建的,并且不知怎的认为它在启动时不会失败。我完全可以接受作为一个答复,如果你想写它作为一个适当的答案,谢谢!我已经测试过,可以在@postconstruct方法中的spring启动项目中抛出RuntimeException(或自定义异常)。我认为您必须关注“未满足的费用例外”及其“原因”部分。您预计会发生什么?由于这个异常,您的bean无法被构造,那么依赖于这个bean的另一个bean无法获得对这个bean的依赖,因为它从未被创建过?所以我看不出有什么问题,它实际上是正常工作的。@M.Deinum啊,你说得对。我误解了Spring是如何处理bean创建的,并且不知怎的认为它在启动时不会失败。我完全可以接受作为一个答复,如果你想写它作为一个适当的答案,谢谢!