Рубрики
Без рубрики

Коды выхода из пружинной загрузки

Узнайте, как предоставить пользовательские коды выхода в приложении Spring Boot

Автор оригинала: baeldung.

1. Обзор

Каждое приложение возвращает код выхода при выходе; этот код может быть любым целочисленным значением, включая отрицательные значения.

В этом кратком руководстве мы узнаем, как мы можем возвращать коды выхода из приложения Spring Boot.

2. Коды загрузки и выхода пружины

Приложение Spring Boot завершит работу с кодом 1 если при запуске возникает исключение. В противном случае на чистом выходе он обеспечивает 0 в качестве кода выхода.

Spring регистрирует крючки завершения работы с JVM, чтобы гарантировать, что ApplicationContext изящно закрывается при выходе. В дополнение к этому Spring также предоставляет интерфейс org.springframework.boot.Генератор кода выхода . Этот интерфейс может возвращать определенный код при вызове System.exit () .

3. Реализация Кодов Выхода

Spring Boot предоставляет четыре метода, которые позволяют нам работать с кодами выхода.

Генератор кода выхода интерфейс и ExitCodeException Mapper позволяют нам указывать пользовательские коды выхода, в то время как ExitCodeEvent позволяет нам считывать код выхода при выходе. Более того, для исключений даже возможно реализовать интерфейс Генератор кода выхода .

3.1. ExitCodeGenerator

Давайте создадим класс, реализующий Генератор кода выхода интерфейс . Мы должны реализовать метод getExitCode () , который возвращает целочисленное значение:

@SpringBootApplication
public class ExitCodeGeneratorDemoApplication implements ExitCodeGenerator {

    public static void main(String[] args) {
        System.exit(SpringApplication
          .exit(SpringApplication.run(DemoApplication.class, args)));
    }
 
    @Override
    public int getExitCode() {
        return 42;
    }
}

Здесь демонстрационное приложение Exit Code Generator класса реализует интерфейс Exit Code Generator . Кроме того, мы завернули вызов в SpringApplication.run() с SpringApplication.exit() .

При выходе код выхода теперь будет 42.

3.2. Отображение исключений ExitCodeException

Теперь давайте выясним, как мы можем вернуть код выхода на основе исключения времени выполнения . Для этого мы реализуем CommandLineRunner , который всегда вызывает NumberFormatException , а затем регистрируем боб типа ExitCodeExceptionMapper :

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

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

В картографе ExitCodeException мы просто сопоставляем исключение с определенным кодом выхода.

3.3. Событие Кода Выхода

Затем мы захватим событие Exit Code для чтения кода выхода нашего приложения . Для этого мы просто зарегистрируем прослушиватель событий, который подписывается на событие Exit Code s (с именем DemoListener в этом примере):

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

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

Теперь, когда приложение завершит работу, будет вызван метод exit Event () , и мы сможем прочитать код выхода из события.

3.4. Исключение с кодом выхода

Исключение также может реализовать Генератор кода выхода интерфейс. При создании таких исключений Spring Boot возвращает код выхода, предоставленный реализованным методом getExitCode () . Например:

public class FailedToStartException extends RuntimeException implements ExitCodeGenerator {

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

Если мы создадим экземпляр Не удалось запустить исключение , Spring Boot обнаружит это исключение как генератор кода выхода и сообщит о 42 в качестве кода выхода.

4. Заключение

В этой статье мы рассмотрели несколько вариантов, предоставляемых Spring Boot для работы с кодами выхода.

Очень важно, чтобы любое приложение возвращало правильный код ошибки при выходе. Код выхода определяет состояние приложения, когда произошел выход. В дополнение к этому, это помогает в устранении неполадок.

Примеры кода можно найти на GitHub .