# Every startup hook in the order Spring Boot 4.1.2 really calls it --- non-web application --- @PostConstruct InitializingBean.afterPropertiesSet SmartInitializingSingleton.afterSingletonsInstantiated SmartLifecycle.start (default phase) ContextRefreshedEvent ApplicationStartedEvent AvailabilityChangeEvent -> CORRECT CommandLineRunner (readiness seen from inside: REFUSING_TRAFFIC, liveness: CORRECT) ApplicationRunner (readiness seen from inside: REFUSING_TRAFFIC) ApplicationReadyEvent (readiness seen from inside: REFUSING_TRAFFIC) AvailabilityChangeEvent -> ACCEPTING_TRAFFIC --- servlet web application (Tomcat on a random port) --- @PostConstruct InitializingBean.afterPropertiesSet SmartInitializingSingleton.afterSingletonsInstantiated WebServerInitializedEvent (port is open) SmartLifecycle.start (default phase) ContextRefreshedEvent ApplicationStartedEvent AvailabilityChangeEvent -> CORRECT CommandLineRunner (readiness seen from inside: REFUSING_TRAFFIC, liveness: CORRECT) ApplicationRunner (readiness seen from inside: REFUSING_TRAFFIC) ApplicationReadyEvent (readiness seen from inside: REFUSING_TRAFFIC) AvailabilityChangeEvent -> ACCEPTING_TRAFFIC