애플리케이션 실행 (main
메소드 실행)
public static void main(String[] args)
메소드에서 SpringApplication.run()
을 호출하여 Spring Boot 애플리케이션을 시작합니다.public static void main(String[] args) {
SpringApplication.run(MyApplication.class, args);
}
SpringApplication
인스턴스 생성 및 구성
SpringApplication.run()
호출을 통해 SpringApplication
객체가 생성되고, 애플리케이션의 구성을 관리합니다.ApplicationEnvironmentPreparedEvent
가 발생합니다.application.properties
또는 application.yml
)을 로드하여 Environment
객체에 적용합니다.ApplicationContext
생성ApplicationContext
타입을 생성합니다. 웹 애플리케이션의 경우 AnnotationConfigServletWebServerApplicationContext
가 일반적입니다.ApplicationContextInitializedEvent
가 발생합니다.ApplicationContext
에 등록된 모든 리스너가 준비됩니다.ApplicationContext
가 로드되고, @Component
, @Service
, @Repository
, @Controller
등의 컴포넌트 스캔을 통해 Bean이 등록됩니다.@EnableAutoConfiguration
어노테이션을 통해 Spring Boot의 자동 구성이 활성화됩니다.ApplicationReadyEvent
가 발생합니다. 이 시점에서 애플리케이션은 완전히 구동되어 요청을 처리할 준비가 완료되었습니다.CommandLineRunner
와 ApplicationRunner
인터페이스를 구현한 Bean들이 실행됩니다. 이를 통해 애플리케이션 시작 시 수행해야 할 특정 작업을 실행할 수 있습니다.@Component
public class MyRunner implements CommandLineRunner {
@Override
public void run(String... args) throws Exception {
// 실행할 코드
}
}
ApplicationContext
가 닫히며 ContextClosedEvent
가 발생합니다. 애플리케이션의 정상적인 종료 과정에서 실행됩니다.Spring Boot 애플리케이션의 동작 순서를 이해하는 것은, 개발자가 Spring Boot의 기능과 잠재력을 최대한 활용하는 데 중요합니다. 이 프레임워크는 개발자가 소프트웨어 개발 과정에서 직면할 수 있는 많은 복잡성과 설정 작업을 줄여주며, 개발 속도와 효율성을 크게 향상시킵니다. Spring Boot가 제공하는 자동 구성, 내장 서버, 메트릭스, 상태 체크, 외부화된 구성 등은 모던 애플리케이션 개발에 필수적인 요소입니다.