[SPRING] 스프링 부트 : 응용 프로그램을 종료하는 동안의 예외
SPRING스프링 부트 : 응용 프로그램을 종료하는 동안의 예외
나는 그 일을 마친 후에 종료해야하는 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)을 사용하는 것보다 나은 해결책이 있습니까?
해결법
-
==============================
1.Application.class에서 CommandLineRunner 인터페이스를 구현할 수 있습니다.
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); } }
from https://stackoverflow.com/questions/35936125/spring-boot-exception-while-exiting-application by cc-by-sa and MIT license
'SPRING' 카테고리의 다른 글
[SPRING] Springockito하는 방법? (0) | 2019.05.12 |
---|---|
[SPRING] Spring 부트 1.4.0으로 업그레이드 한 후 AbstractPlatformTransactionManager의 NullPointerException (0) | 2019.05.12 |
[SPRING] 1 년 이상 된 레코드 삭제 (0) | 2019.05.12 |
[SPRING] 허용되는 최대 크기와 관련된 Tomcat으로 파일 업로드하기 (0) | 2019.05.11 |
[SPRING] Spring과 Maven을 사용할 때 코드를 서버에 배포하는 가장 좋은 방법은 무엇입니까? (0) | 2019.05.11 |