[Springboot] 23. SpringApplication #4 Application Exit & Admin Features

2022. 10. 14. 10:27JAVA/Spring

1. Application Exit

각각의 SpringApplication은 ApplicationContext가 정상적으로 종료하기 위해서 JVM에 shutdown hook을 등록합니다. 모든 표준 스프링 라이프싸이클 콜백(DisposableBean 인터페이스 또는 @PreDestory 애노테이션)은 사용할 수 있습니다.

 

게다가 만약 SpringApplication.exit() 메서드가 호출될때 특정한 종료 코드를 반환하고 싶은 경우에 빈(bean)들은 "org.springframework.boot.ExitCodeGenerator" 인터페이스를 구현할 수 있습니다. 이 종료 코드는 다음과 같이 상태코드로써 반환되어 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 인터페이스는 예외들에 의해서 구현될 수 있습니다. 예외가 발생했을때 스프링 부트는 getExitCode() 메서드에 의해서 제공되는 종료 코드를 반환합니다.

 

2. Admin Features

"spring.application.admin.enabled" 속성을 명세함으로써 애플리케이션에 대한 관리 관련 기능을 활성화시킬 수 있습니다. MBeanServer 플랫폼에 SpringApplicationAdminMXBean을 노출시킵니다. Spring Boot Application을 원격으로 관리하기 위해서 이 기능을 사용할 수 있습니다. 이 기능은 또한 서비스 래퍼 구현에 대해서도 유용합니다.

 

References

https://docs.spring.io/spring-boot/docs/2.1.6.RELEASE/reference/html/boot-features-spring-application.html#boot-features-application-exit