Запуск приложения
Что происходит после main()
В Boot-приложении метод main() только запускает процесс.
SpringApplication.run() подготавливает окружение, создаёт контекст,
регистрирует конфигурацию, создаёт beans и завершает старт только после того,
как контейнер готов к обычной работе.
Если приложению нужно выполнить небольшой код сразу после успешного запуска контекста,
можно использовать ApplicationRunner или CommandLineRunner.
@Component
class StartupRunner implements ApplicationRunner {
@Override
public void run(ApplicationArguments args) {
System.out.println("Application is ready");
}
}
Метод run() вызывается уже после создания контекста,
поэтому runner может получать другие beans через обычный Dependency Injection.
Такой механизм подходит, например, для небольшой инициализации или проверки,
которая должна выполниться при старте.
Старт — это часть жизненного цикла
Запущенный контекст продолжает жить, пока работает приложение. При корректном завершении он закрывается, и Spring выполняет callbacks уничтожения beans, которые мы уже встречали в жизненном цикле Spring Core. Таким образом, Boot не отменяет этот жизненный цикл — он организует запуск и завершение приложения вокруг него.