
학부 시절 XML에 직접 bean 등록하면서 Spring Framework가 어떻게 구성되었는지 어느정도 기억을 가지고 있으나 기억이 가물가물하여 내용을 정리하고자 합니다.
구동 시점은 애플리케이션이 실행되고 요청을 받기 전까지의 과정입니다.
이 시점의 목적은 단 하나입니다.
요청을 처리할 수 있는 모든 준비를 끝내는 것입니다.
Spring Framework는 가장 먼저 ApplicationContext(IoC Container)를 생성합니다.
이 Container는 다음 역할을 수행합니다.
Spring은 설정 방식을 가리지 않고 모든 설정을 BeanDefinition으로 변환합니다.
이 단계에서는 객체는 생성되지 않고 메타데이터만 준비됩니다.
생성된 BeanDefinition은 BeanDefinitionRegistry에 등록됩니다.
이 시점까지도 실제 객체는 존재하지 않습니다.
다음으로 BeanFactoryPostProcessor가 실행됩니다.
중요한 점은, 이 단계는 객체 생성 이전에만 실행됩니다.
Spring은 Bean을 생성하기 전에
BeanPostProcessor 자체를 먼저 Bean으로 등록합니다.
👉이 Processor들이 나중에 AOP와 Proxy 생성을 담당합니다.
이제 Spring은 기본 Scope인 Singleton Bean을 생성합니다.
이 과정에서 다음이 함께 수행됩니다.
👉 이 시점부터 Container 안에는 원본 객체가 아닌 Proxy 객체가 존재합니다.
웹 애플리케이션인 경우 WebApplicationContext가 구성됩니다.
마지막으로 DispatcherServlet이 생성되고 초기화됩니다.
