# SmartLifecycle: start in ascending phase, stop in descending phase, runners after all of it --- startup --- start low (phase -100) on main start mid (phase 0) on main start high (phase 100) on main start slow (phase 200) on main ApplicationStartedEvent CommandLineRunner runs ApplicationReadyEvent manual.isAutoStartup()=false isRunning()=false (never started by the context) --- context.close() --- start manual (phase 50) on main ContextClosedEvent (stop phase begins) stop slow (phase 200) begins, will finish in 300 ms stop slow finished, calling the callback stop high (phase 100) on main stop manual (phase 50) on main stop mid (phase 0) on main stop low (phase -100) on main