Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Spring引导:尝试从@PostConstruct方法引发自定义RunTimeException失败_Java_Spring_Spring Boot_Runtimeexception_Postconstruct - Fatal编程技术网

Java Spring引导:尝试从@PostConstruct方法引发自定义RunTimeException失败

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.

基本上,我的代码如下。考虑到这是代码的“测试”状态。最初的问题是对另一个类的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);
  }
}
而且,在创建使用该类的类时,我得到了一个“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创建的,并且不知怎的认为它在启动时不会失败。我完全可以接受作为一个答复,如果你想写它作为一个适当的答案,谢谢!