AbstractApplicationContext.refresh() 메서드의 흐름과 동일하다.has not been refreshed yet 에러가 발생한다.DefaultListableBeanFactory를 생성(또는 갱신)한다.ApplicationContextAware 같은 Aware 인터페이스를 처리할 BeanPostProcessor를 등록한다.BeanFactoryPostProcessor가 실행된다.BeanPostProcessor들을 찾아서 등록한다. (실행은 나중에)MessageSource와 이벤트 발행을 위한 ApplicationEventMulticaster를 초기화한다.ApplicationListener 구현체들을 등록한다.@PostConstructonRefresh를 호출한다.ContextRefreshedEvent 이벤트를 발행한다.리프레시가 성공적으로 끝나면 컨텍스트는 Running 상태가 된다.
getBean() 요청 시 완성된 빈을 반환한다.publishEvent()를 통해 이벤트를 전파한다.DispatcherServlet이 들어오는 요청을 받아 컨트롤러로 라우팅한다.애플리케이션 종료나 테스트 종료 시 close()가 호출된다.
SmartLifecycle 등의 stop() 메서드를 호출한다.@PreDestroy -> DisposableBean.destroy() 순으로 실행된다.