티스토리 뷰

스프링 부트가 실행될 때 내부적으로 일어나는 일은 꽤 체계적입니다. "애플리케이션을 구동하기 위한 준비 단계"부터 "실제 서비스가 가능한 상태"까지의 핵심 순서를 정리해 드릴게요.


1. 스프링 부트 구동 순서 (Lifecycle)

스프링 부트의 main 메서드가 실행되면 다음과 같은 흐름으로 진행됩니다.

① 메인 클래스 실행 (SpringApplication.run)

가장 먼저 우리가 만든 @SpringBootApplication 어노테이션이 붙은 클래스의 main 메서드가 시작됩니다.

② 설정 파일(Properties/Yaml) 로드

스프링 부트는 가장 먼저 **환경 설정(Environment)**을 구성합니다.

  • application.properties나 application.yml 파일을 읽어들입니다.
  • 여기서 DB 접속 정보, 포트 번호(8080 등), MyBatis 설정 경로 등을 먼저 파악합니다.

③ 스프링 컨테이너(ApplicationContext) 생성

이제 객체들을 담을 거대한 바구니인 컨테이너를 만듭니다. 이 단계에서 어떤 객체를 생성할지 '지도'를 그립니다.

④ 빈(Bean) 스캔 및 등록 (Component Scan)

가장 중요한 단계 중 하나입니다.

  • @Component, @Service, @Controller, @Repository, @Mapper 등의 어노테이션이 붙은 클래스들을 싹 찾아냅니다.
  • 이때 DAO와 Service 객체들이 생성되어 컨테이너에 담깁니다.

⑤ 의존성 주입 (Dependency Injection)

생성된 객체들끼리 서로 연결해 줍니다.

  • 예를 들어, Service 객체 안에 @Autowired된 DAO가 있다면, 컨테이너에 있는 DAO 객체를 서비스에 꽂아줍니다.
  • 이 과정이 끝나야 비로소 우리가 짠 코드들이 정상적으로 동작할 수 있는 상태가 됩니다.

⑥ 내장 서블릿 컨테이너(Tomcat) 구동

스프링 부트의 큰 장점이죠! 별도의 서버 설치 없이, 내부에 포함된 Tomcat을 실행합니다. 이제 밖에서 들어오는 HTTP 요청을 받을 준비가 된 것입니다.

⑦ 마지막 체크 (Runner 실행)

모든 준비가 끝나면 CommandLineRunner 같은 인터페이스를 구현한 코드가 있을 경우 마지막으로 실행하며 구동을 완료합니다.


2. 우리가 배운 요소들의 등장 시점

질문하신 내용과 연결해 보면 이렇습니다.

  1. 설정 파일(yml): 2단계에서 읽혀서 MyBatis가 어디에 있는지 파악합니다.
  2. XML Mapper: 스프링이 시작되면서 MyBatis 설정에 따라 XML 내용들을 읽어 메모리에 올려둡니다.
  3. DAO / Service: 4~5단계에서 객체로 만들어지고 서로 연결됩니다.
  4. 준비 완료: 이제 사용자가 브라우저에 주소를 입력하면 톰캣이 이를 받아 Controller로 전달하게 됩니다.

3. 한 줄 요약

환경 설정 읽기 → 객체 찾아서 만들기(Bean) → 객체끼리 연결하기(DI) → 웹 서버(Tomcat) 실행

이 순서대로 진행되기 때문에, 만약 설정 파일에 오타가 있거나(yml), 객체 연결(@Autowired)이 잘못되면 서버가 아예 켜지지 않고 에러를 뱉는 것입니다.

 

 

※ 해당 내용은 Google Gmini3.0에서 작성되었습니다.

댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
TAG more
«   2026/03   »
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 31
글 보관함