# 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
