Spring Framework 구동 flow 정리

donghyeoneom·2026년 1월 31일
post-thumbnail

학부 시절 XML에 직접 bean 등록하면서 Spring Framework가 어떻게 구성되었는지 어느정도 기억을 가지고 있으나 기억이 가물가물하여 내용을 정리하고자 합니다.

구동 시점 (Spring Framework가 시작될 때)

구동 시점은 애플리케이션이 실행되고 요청을 받기 전까지의 과정입니다.
이 시점의 목적은 단 하나입니다.
요청을 처리할 수 있는 모든 준비를 끝내는 것입니다.


1️⃣ ApplicationContext 생성

Spring Framework는 가장 먼저 ApplicationContext(IoC Container)를 생성합니다.
이 Container는 다음 역할을 수행합니다.

  • Bean 관리
  • 의존성 주입
  • 객체 생명주기 관리

2️⃣ 설정 정보 로딩 및 BeanDefinition 생성

Spring은 설정 방식을 가리지 않고 모든 설정을 BeanDefinition으로 변환합니다.

  • XML
  • Annotation
  • Java Config

이 단계에서는 객체는 생성되지 않고 메타데이터만 준비됩니다.


3️⃣ BeanDefinitionRegistry 등록

생성된 BeanDefinition은 BeanDefinitionRegistry에 등록됩니다.

이 시점까지도 실제 객체는 존재하지 않습니다.


4️⃣ BeanFactoryPostProcessor 실행

다음으로 BeanFactoryPostProcessor가 실행됩니다.

  • BeanDefinition 수정 가능
  • 설정 값 가공 가능

    중요한 점은, 이 단계는 객체 생성 이전에만 실행됩니다.


5️⃣ BeanPostProcessor 등록

Spring은 Bean을 생성하기 전에
BeanPostProcessor 자체를 먼저 Bean으로 등록합니다.

👉이 Processor들이 나중에 AOP와 Proxy 생성을 담당합니다.


6️⃣ Singleton Bean 생성 + Proxy 생성

이제 Spring은 기본 Scope인 Singleton Bean을 생성합니다.
이 과정에서 다음이 함께 수행됩니다.

  1. 실제 객체 생성
  2. 의존성 주입
  3. BeanPostProcessor 실행
  4. AOP 대상 Bean인 경우 Proxy 생성
  5. IoC Container에 Proxy Bean 등록

👉 이 시점부터 Container 안에는 원본 객체가 아닌 Proxy 객체가 존재합니다.


7️⃣ WebApplicationContext 구성

웹 애플리케이션인 경우 WebApplicationContext가 구성됩니다.

  • Controller Bean
  • HandlerMapping
  • HandlerAdapter
  • ViewResolver

8️⃣ DispatcherServlet 생성 및 초기화

마지막으로 DispatcherServlet이 생성되고 초기화됩니다.

  • Spring MVC의 Front Controller
  • 요청 진입점
  • ApplicationContext 참조
    이 시점이 되면 애플리케이션은 요청을 받을 준비가 완료됩니다.

0개의 댓글