<aside> <img src="/icons/gradebook_purple.svg" alt="/icons/gradebook_purple.svg" width="40px" />

학습 목표

1. Spring Boot 실행 프로세스 이해

flowchart TD
    A["public static void main"] --> B["SpringApplication.run(...)"]
    B --> C["@SpringBootApplication"]
    C --> D_sub

    D_sub --> E["ApplicationContext 초기화"]
    E --> F["내장 Tomcat 등 서버 구동"]
    F --> G["클라이언트 요청 대기 상태 진입"]

    subgraph D_sub [구성 어노테이션]
        DA["@EnableAutoConfiguration"]
        DB["@ComponentScan"]
        DC["@SpringBootConfiguration"]
    end

Spring Boot 애플리케이션은 SpringApplication.run() 호출을 통해 실행되며, 이 과정은 단순한 메서드 호출 이상의 의미를 가진다. 실행과 동시에 애플리케이션 컨텍스트 생성, 자동 설정 적용, Bean 등록, 생명주기 콜백 실행 등의 일련의 핵심 단계가 체계적으로 작동하게 된다.

이 절에서는 Spring Boot가 애플리케이션을 구동하는 전체 흐름을 내부적으로 어떤 방식으로 처리하는지를 구조적으로 살펴본다.

1-1. 애플리케이션 컨텍스트 생성 단계

Spring Boot는 실행 시 SpringApplication 객체를 생성하고, 내부적으로 다양한 초기화 작업을 수행한다. 이 때 가장 중요한 과정 중 하나가 ApplicationContext의 생성 및 구성 단계다.

ConfigurableApplicationContext context = SpringApplication.run(MyApp.class, args);

실제로 이 호출 내부에서는 다음과 같은 단계가 진행된다:

  1. SpringApplication 객체 생성
  1. WebApplicationType 결정
  2. ApplicationContext 생성
  3. ApplicationContext 구성

<aside> 💡

이 단계는 Spring의 기본 컨테이너 구성을 완성하는 중요한 기초 단계로, 이후 자동 설정이나 Bean 등록은 이 컨텍스트 위에서 동작한다.

</aside>

1-2. 자동 설정 적용 과정

ApplicationContext가 준비되면, Spring Boot는 자동 구성 로직을 적용하여 필요한 Bean과 설정을 자동으로 주입한다. 이 과정의 핵심은 @EnableAutoConfiguration에 의해 동작하는 자동 설정 클래스의 로딩이다.