23.9 어플리케이션 종료

SpringApplication은 종료시 ApplicationContext를 정상적으로 close하는 것을 보장하도록 JVM에 shutdown hook을 등록한다. 모든 표준 스프링 생명주기 콜백들(DisposableBean 인터페이스나 @PreDestroy어노테이션)이 사용될 수 있다.

거기에 더해 SpringApplication.exit()이 호출 될 때 특정 종료코드를 반환하기를 원하면 빈들이 org.springframework.boot.ExitCodeGenerator 인터페이스를 구현하면 된다. 이 종료코드는 System.exit()으로 전달되어 System.exit()의 상태코드로 반환된다. 다음은 그 예이다.

@SpringBootApplication
public class ExitCodeApplication {

	@Bean
	public ExitCodeGenerator exitCodeGenerator() {
		return () -> 42;
	}

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

}

또한 ExitCodeGenerator 인터페이스는 예외Exception에서 구현할 수도 있다. 특정 예외가 발생하면 스프링 부트는 구현된 getExitCode() 메소드가 제공하는 종료코드를 반환한다.

Last updated