У меня вопрос по поводу запуска в 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-компонента? это хорошая практика? Есть ли хорошие способы справиться с этим?




Если 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);Пожалуйста, проверьте статью это для получения более подробной информации.
Вы можете проверить это: stackoverflow.com/questions/22944144/…