Spring Boot:退出应用程序时发生异常

约翰尼斯·温

我想运行一个Spring应用程序,该应用程序在完成其工作后应退出。但是在我的实现中,我得到了一个例外。

build.gradle 包含:

dependencies {
    compile("org.springframework.boot:spring-boot-starter-web") {
        exclude module: "spring-boot-starter-tomcat"
    }
}

Application.java

@SpringBootApplication
public class Application {

    @Autowired
    private ApplicationContext context;

    public static void main(String[] args) {
        SpringApplication.run(Application.class, args);
    }

    @PostConstruct
    public void doTheWorkAndExit() {
        // do the work ...
        SpringApplication.exit(context, () -> 0);
    }

}

我例外

Exception thrown from LifecycleProcessor on context close

java.lang.IllegalStateException: LifecycleProcessor not initialized - call 'refresh' before invoking lifecycle methods via the context: org.springframework.context.annotation.AnnotationConfigAppl
icationContext@1807f5a7: startup date [Fri Mar 11 10:03:27 CET 2016]; root of context hierarchy
    at org.springframework.context.support.AbstractApplicationContext.getLifecycleProcessor(AbstractApplicationContext.java:415)
    at org.springframework.context.support.AbstractApplicationContext.doClose(AbstractApplicationContext.java:975)
    at org.springframework.context.support.AbstractApplicationContext.close(AbstractApplicationContext.java:934)
    at org.springframework.boot.SpringApplication.close(SpringApplication.java:1252)
    at org.springframework.boot.SpringApplication.exit(SpringApplication.java:1238)
    at mypackage.Application.doTheWorkAndExit(Application.java:34)
    ...

我能做什么?有没有比使用更好的解决方案System.exit(0)

帕特里克

在你Application.class可以实现CommandLineRunner接口。

@SpringBootApplication
public class Application implements CommandLineRunner{}

实现后,您需要实现一个void方法 run()

@Override
public void run(String... strings) {
    //here starts your code (like in a normal main method in a java application)
}

执行完所有代码后,应用程序关闭。


完整的Application.class

@SpringBootApplication
public class Application implements CommandLineRunner{

  @Override
  public void run(String... strings) {
      //here your code...
  }

  public static void main(String[] args) throws Exception {
      SpringApplication.run(Application.class, args);    
  }
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

使用Intellij IDEA重新加载远程Spring Boot应用程序时发生异常

在Docker中运行Spring Boot应用程序时发生异常

启动Spring Web MVC应用程序时发生异常

部署Spring Boot Okta应用程序时发生SunCertPathBuilderException

运行Spring Session + Spring Boot应用程序时发生运行时错误

尝试调试Spring Boot Rest应用程序时发生未授权的错误

为什么在使用Spring Boot运行应用程序时会遇到SpringIntegration异常

执行简单的Spring Boot应用程序时出现IllegalAccessError异常

启动Spring-boot应用程序时出现异常

在带有Spring 4.3和JRebel的tomcat8中部署Java应用程序时发生异常

将本地React前端连接到本地Spring Boot中间件应用程序时发生CORS错误

Javafx Spring Boot-运行应用程序时出错

运行Spring Boot Web应用程序时JVM崩溃

运行我的Spring Boot应用程序时伪装UnsatisfiedDependecyException

创建Spring Boot应用程序时出错

创建Spring Boot应用程序时出现问题

在Bluemix上运行Spring Boot应用程序时出错

容器化Spring Boot应用程序时的Docker错误

测试 Spring Boot Camel 应用程序时出现 NullPointerException

Spring Batch应用程序-调用Spring Boot应用程序时获取Null Pointer应用程序

为Spring Boot应用程序创建胖jar(取决于其他项目)时发生异常

Spring Boot应用程序+ Jolokia-启动期间的异常

Spring Boot 应用程序主类中的异常

在角度应用程序中显示Spring Boot异常

部署应用程序时发生java.lang.AbstractMethodError(Spring 4 MVC + Hibernate 4/5)

使用mongodb的spring数据进行Spring boot:加载应用程序时出错

尝试访问Amazon Elastic Bean Stalk上的Spring Boot应用程序时出现错误404

测试Spring Boot Batch应用程序时如何配置EntityManagerFactoryBuilder bean?

在Spring-Boot上启动Web应用程序时出错