Spring Boot-在某些条件下抛出错误并停止应用程序启动

时间:2018-02-21 03:54:19

标签: java spring spring-boot

我正在开发一个应用程序,在bean的post构造方法中,我正在添加一些逻辑来创建一个对象。现在,我想要做的是,如果有异常并且对象的创建有一些错误,那么不要让应用程序启动。是的,我可以看到在启动时控制台上抛出一个异常,如果对象的构造有任何问题,但是我想要一些更好的东西告诉我一个对象的构造失败了,什么比应用程序无法启动更好的标准。

非常感谢任何帮助。

提前谢谢你。

1 个答案:

答案 0 :(得分:2)

您可以针对此类要求查找FailureAnalyzer,以便在应用程序启动失败时提供其他信息。如果在应用程序启动期间引发任何异常,则将按顺序调用所有FailureAnalyzer类。如果任何FailureAnalyzer类返回FailureAnalysis对象,则该异常将不会传播到其他FailureAnalysis类。

请确保在resource/META-INF/spring.factories文件中注册FailureAnalysis课程。

@Component
public class SomeObject {

  @PostConstruct
  public void init() throws Exception {
    throw new Exception("SomeObject init threw exception");
  }
}

public class ObjConstructionFailureAnalyzer extends 
                     AbstractFailureAnalyzer<BeanCreationException> {

  @Override
  protected FailureAnalysis analyze(Throwable rootFailure, 
                        BeanCreationException cause) {
    System.out.println("\n===>ObjConstructionFailureAnalyzer::analyze()\n");
    String desciption = "Object creation failed, [Reason]: " + 
                                                     cause.getMessage();
    String action = "Please handle exceptions in your init methods";
    return new FailureAnalysis(desciption, action, cause);
  }
}

spring.factories档案

org.springframework.boot.diagnostics.FailureAnalyzer=examples.stackoverflow.ObjConstructionFailureAnalyzer

异常堆栈跟踪

  

===&GT; ObjConstructionFailureAnalyzer ::分析()

     

2018-02-21 10:16:59.552 ERROR 9500 --- [主要]   o.s.b.d.LoggingFailureAnalysisReporter:

     

***************************申请失败

           

说明

     

对象创建失败,[原因]:创建名称为bean的错误   'someObject':init方法的调用失败;嵌套异常是   java.lang.Exception:SomeObject init抛出异常

     

动作:

     

请处理init方法中的异常

Project Structure

您还可以访问here以获取代码示例。