Códigos de saída do Boot Spring

Códigos de saída do Boot Spring

1. Visão geral

Todo aplicativo retorna um código de saída na saída; esse código pode ser qualquer valor inteiro, incluindo valores negativos.

Neste tutorial rápido, vamos descobrir como podemos retornar códigos de saída de um aplicativo Spring Boot.

2. Códigos de inicialização e saída de primavera

Um aplicativo Spring Boot será encerrado com o código1 se ocorrer uma exceção na inicialização. Caso contrário, em uma saída limpa, ele fornece0 como o código de saída.

O Spring registra ganchos de desligamento com a JVM para garantir que oApplicationContext clos funcione normalmente na saída. Além disso, o Spring também fornece a interfaceorg.springframework.boot.ExitCodeGenerator. Esta interface pode retornar o código específico quandoSystem.exit()  é chamado.

3. Implementando códigos de saída

A inicialização fornece três métodos que nos permitem trabalhar com códigos de saída.

A interfaceExitCodeGenerator eExitCodeExceptionMapper nos permitem especificar códigos de saída personalizados, enquantoExitCodeEvent nos permite ler o código de saída na saída.

3.1. ExitCodeGenerator 

Vamos criar uma classe que implemente a interfaceExitCodeGenerator.. Temos que implementar o métodogetExitCode() que retorna um valor inteiro:

@SpringBootApplication
public class DemoApplication implements ExitCodeGenerator {

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

    @Override
    public int getExitCode() {
        return 42;
    }
}

Aqui, a classeDemoApplication implementa oExitCodeGenerator interface. Also,we wrapped the call to SpringApplication.run() with *SpringApplication.exit()*. 

Na saída, o código de saída será agora 42.

3.2. ExitCodeExceptionMapper

Agora vamos descobrir como podemosreturn an exit code based on a runtime exception. Para isso, implementamos umCommandLineRunner que sempre lança umNumberFormatExceptione, em seguida, registramos um bean do tipoExitCodeExceptionMapper:

@Bean
CommandLineRunner createException() {
    return args -> Integer.parseInt("test") ;
}

@Bean
ExitCodeExceptionMapper exitCodeToexceptionMapper() {
    return exception -> {
        // set exit code base on the exception type
        if (exception.getCause() instanceof NumberFormatException) {
            return 80;
        }
        return 1;
    };
}

Dentro deExitCodeExceptionMapper, , simplesmente mapeamos a exceção para um determinado código de saída.

3.3. ExitCodeEvent

A seguir, capturaremos umExitCodeEvent para ler o código de saída de nosso aplicativoPara isso, simplesmenteregister an event listener which subscribes to*ExitCodeEvents* (capturamosDemoListener neste exemplo):

@Bean
DemoListener demoListenerBean() {
    return new DemoListener();
}

private static class DemoListener {
    @EventListener
    public void exitEvent(ExitCodeEvent event) {
        System.out.println("Exit code: " + event.getExitCode());
    }
}

Agora, quando o aplicativo sair, o métodoexitEvent() será chamado e podemos ler o código de saída do evento.

4. Conclusão

Neste artigo, examinamos várias opções fornecidas pelo Spring Boot para trabalhar com códigos de saída.

É muito importante para qualquer aplicativo retornar o código de erro correto ao sair. O código de saída determina o estado do aplicativo quando a saída aconteceu. Além disso, ajuda na solução de problemas.

As amostras de código podem ser encontradasover on GitHub.