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

}

}

以上是 Spring Boot:退出应用程序时发生异常 的全部内容, 来源链接: utcz.com/qa/413160.html

回到顶部