Spring Boot:尝试从@PostConstruct方法抛出自定义RunTimeException失败



基本上,我的代码在下面。考虑到这是代码的"测试"状态。最初的问题是对init((的调用引发了一个检查异常。此抛出被try/catch块捕获,然后应用程序在尝试创建异常时失败。为了清楚起见,所有这些都被删除了,因为问题出现在"MyCustomRuntimeException"创建中。

@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);
}
}

而且,当创建一个使用此类的类时,我会得到一个"不满意的依赖异常"。控制台指向新的MyCustomRuntimeException被抛出的行,我真的不知道发生了什么

此外,"MyCustomRuntimeException"一开始是一个常规异常,但我发现我应该抛出RunTimeException,因为@PostConstruct禁止抛出已检查的异常。我还尝试过抛出一个标准的RunTimeException,但没有成功。

所以,我在这里一无所知。关于为什么我不能抛出这个例外,有什么想法吗?

上下文中的每个bean都需要正确创建。当发生错误时,bean的创建将停止/失败,上下文(或者换句话说,应用程序(将不会启动。

您会得到一个UnsatisfiedDependencyException,因为创建ClassNamebean是因为其他bean需要它。在构造ClassName之后,它将调用ClassNamebean的@PostConstruct,但由于异常而失败。因此,实例不会被创建,因此UnsatisfiedDependencyException

UnsatisfiedDependencyException的根本原因将是您自己的初始值设定项方法引发的异常。

最新更新