# Every callback for one bean, from constructor to the last destroy hook (SpringApplication, no web server) === startup === constructor setter injection (@Autowired setDependency) BeanNameAware.setBeanName("kitchenSink") BeanFactoryAware.setBeanFactory ApplicationContextAware.setApplicationContext BeanPostProcessor.postProcessBeforeInitialization @PostConstruct InitializingBean.afterPropertiesSet @Bean(initMethod = "customInit") BeanPostProcessor.postProcessAfterInitialization SmartInitializingSingleton.afterSingletonsInstantiated SmartLifecycle.start (phase 2147483647) ContextRefreshedEvent ApplicationStartedEvent ApplicationRunner.run ApplicationReadyEvent === ctx.close() === ContextClosedEvent SmartLifecycle.stop @PreDestroy DisposableBean.destroy @Bean(destroyMethod = "customDestroy")