[SpringBoot] 실행 시 주요 단계별 동작 순서

도리도리·2024년 4월 11일
0

SpringBoot

목록 보기
9/9
post-thumbnail

Spring Boot 애플리케이션 실행 과정

  1. 애플리케이션 실행 (main 메소드 실행)

    • public static void main(String[] args) 메소드에서 SpringApplication.run()을 호출하여 Spring Boot 애플리케이션을 시작합니다.
    public static void main(String[] args) {
        SpringApplication.run(MyApplication.class, args);
    }
  2. SpringApplication 인스턴스 생성 및 구성

  • SpringApplication.run() 호출을 통해 SpringApplication 객체가 생성되고, 애플리케이션의 구성을 관리합니다.
  1. 이벤트 리스너 및 초기화기 등록
  • 애플리케이션의 생명주기 이벤트를 처리하기 위한 이벤트 리스너들이 등록됩니다.
  • 필요한 경우 사용자 정의 이벤트 리스너 및 애플리케이션 초기화기(Application Initializers)를 추가할 수 있습니다.
  1. 애플리케이션 환경 준비
  • ApplicationEnvironmentPreparedEvent가 발생합니다.
  • 프로파일과 애플리케이션 설정 파일(application.properties 또는 application.yml)을 로드하여 Environment 객체에 적용합니다.
  1. ApplicationContext 생성
  • 적절한 ApplicationContext 타입을 생성합니다. 웹 애플리케이션의 경우 AnnotationConfigServletWebServerApplicationContext가 일반적입니다.
  1. 애플리케이션 이벤트 및 리스너 준비
  • ApplicationContextInitializedEvent가 발생합니다.
  • ApplicationContext에 등록된 모든 리스너가 준비됩니다.
  1. 자동 구성 실행
  • ApplicationContext가 로드되고, @Component, @Service, @Repository, @Controller 등의 컴포넌트 스캔을 통해 Bean이 등록됩니다.
  • @EnableAutoConfiguration 어노테이션을 통해 Spring Boot의 자동 구성이 활성화됩니다.
  1. 애플리케이션 준비 완료
  • ApplicationReadyEvent가 발생합니다. 이 시점에서 애플리케이션은 완전히 구동되어 요청을 처리할 준비가 완료되었습니다.
  1. 서비스 실행
  • CommandLineRunnerApplicationRunner 인터페이스를 구현한 Bean들이 실행됩니다. 이를 통해 애플리케이션 시작 시 수행해야 할 특정 작업을 실행할 수 있습니다.
@Component
public class MyRunner implements CommandLineRunner {
    @Override
    public void run(String... args) throws Exception {
        // 실행할 코드
    }
}
  1. 애플리케이션 종료
    ApplicationContext가 닫히며 ContextClosedEvent가 발생합니다. 애플리케이션의 정상적인 종료 과정에서 실행됩니다.

마무리

Spring Boot 애플리케이션의 동작 순서를 이해하는 것은, 개발자가 Spring Boot의 기능과 잠재력을 최대한 활용하는 데 중요합니다. 이 프레임워크는 개발자가 소프트웨어 개발 과정에서 직면할 수 있는 많은 복잡성과 설정 작업을 줄여주며, 개발 속도와 효율성을 크게 향상시킵니다. Spring Boot가 제공하는 자동 구성, 내장 서버, 메트릭스, 상태 체크, 외부화된 구성 등은 모던 애플리케이션 개발에 필수적인 요소입니다.

profile
개발자에 꽃

0개의 댓글