Как закрыть приложение при запуске при весенней загрузке

У меня вопрос по поводу запуска в spring boot, как закрыть приложение во время запуска, например, у меня следующее

application.yml:

ansi:
   true

А у меня такой класс @Configuration:

@Configuration
class AppConfig {
   @Value('${ansi}')
   String ansi;


   @Bean
   getAnsi() {
        if (ansi.equals("true")) {
             Ansi ansiObj = new Ansi();
             ansiObj.ansi = ansi;
             return ansiObj;
        }
   }
}

class Ansi {
   String ansi;
}

Когда ansi в application.yml - это true, он продолжается, в противном случае приложение должно быть закрыто, можем ли мы закрыть приложение во время создания bean-компонента? это хорошая практика? Есть ли хорошие способы справиться с этим?

Вы можете проверить это: stackoverflow.com/questions/22944144/…

Tu.Ma. 08.11.2018 11:06
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
0
1
110
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Если bean-компонент генерирует исключение, Spring не продолжит работу и процесс завершится.

if (ansi.equals("true")) {
     Ansi ansiObj = new Ansi();
     ansiObj.ansi = ansi;
     return ansiObj;
}
else  {
    throw new IllegalArgumentException("reason");
}

Я не могу сказать, что у меня когда-либо был вариант использования для этого, но я бы не сказал, что это необходимая плохая практика. В этом ограниченном примере истинного и ложного это кажется немного необычным. Было бы больше смысла, если бы вам нужно было ограничение на свойство, например. X <10

Ответ принят как подходящий

У нас есть много способов закрыть приложение с весенней загрузкой:

Завершение работы конечной точки отдыха - добавьте свойства ниже в свой application.properties и запустите после запроса curl -X POST localhost:port/actuator/shutdown

management.endpoints.web.exposure.include=*  
management.endpoint.shutdown.enabled=true  
endpoints.shutdown.enabled=true

Также вы можете вызвать подходящий метод для завершения работы приложения:

  • Вызывая метод close() для объекта ConfigurableApplicationContext (он закроет контекст приложения)
  • Передав код выхода методу SpringApplication.exit(ctx, () -> 0);

Пожалуйста, проверьте статью это для получения более подробной информации.

Другие вопросы по теме