티스토리 뷰
스프링 부트가 실행될 때 내부적으로 일어나는 일은 꽤 체계적입니다. "애플리케이션을 구동하기 위한 준비 단계"부터 "실제 서비스가 가능한 상태"까지의 핵심 순서를 정리해 드릴게요.
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. 우리가 배운 요소들의 등장 시점
질문하신 내용과 연결해 보면 이렇습니다.
- 설정 파일(yml): 2단계에서 읽혀서 MyBatis가 어디에 있는지 파악합니다.
- XML Mapper: 스프링이 시작되면서 MyBatis 설정에 따라 XML 내용들을 읽어 메모리에 올려둡니다.
- DAO / Service: 4~5단계에서 객체로 만들어지고 서로 연결됩니다.
- 준비 완료: 이제 사용자가 브라우저에 주소를 입력하면 톰캣이 이를 받아 Controller로 전달하게 됩니다.
3. 한 줄 요약
환경 설정 읽기 → 객체 찾아서 만들기(Bean) → 객체끼리 연결하기(DI) → 웹 서버(Tomcat) 실행
이 순서대로 진행되기 때문에, 만약 설정 파일에 오타가 있거나(yml), 객체 연결(@Autowired)이 잘못되면 서버가 아예 켜지지 않고 에러를 뱉는 것입니다.
※ 해당 내용은 Google Gmini3.0에서 작성되었습니다.
'WEB > 자바' 카테고리의 다른 글
| @SpringBootApplication나 메인머서드 없을 수도 있나요? 전자정부프레임워크 입니다. (0) | 2026.03.25 |
|---|---|
| 어노테이션이 궁금합니다. (0) | 2026.03.25 |
| DAO - selectUserList - xml 어느파일에 있는줄 알고 가져와요? (0) | 2026.03.25 |
| MyBatis 환경에서 DAO와 XML(Mapper) (0) | 2026.03.25 |
| Dao dto를 사용하고 dao에서 selectList selectOne를 사용하는 경우는 jpa일까요? (1) | 2026.03.25 |
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- 자바스크립트정규표현식
- 파비콘 #파비콘 사이트에 적용
- sw기술자평균임금 #2025년 sw기술자 평균임금
- 광주분식 #광주분식맛집 #상추튀김 #상추튀김맛집 #광주상추튀김
- 좋은책 #밥프록터 #부의원리
- 바지락칼국수 #월곡동칼국수 #칼국수맛집
- 자바스크립트 #javascript #math
- 좋은책
- 정보처리기사 #정보처리기사요약 #정보처리기사요점정리
- 와이파이증폭기추천 #와이파이설치
- lg그램pro #lg그램 #노트북 #노트북추천 #lg노트북
- 쇼팬하우어 #좋은책
- jQuery #jQuery이미지슬라이드 #이미지슬라이드
- SQL명령어 #SQL
- 무료폰트 #무료웹폰트 #한수원한돋움 #한수원한울림 #한울림체 #한돋움체
- 파비콘사이즈
- css미디어쿼리 #미디어쿼리 #mediaquery
- 자바스크립트break
- thymeleaf
- 테스크탑무선랜카드 #무선랜카드 #아이피타이무선랜카드 #a3000mini #무선랜카드추천
- 연명의료결정제도 #사전연명의료의향서 #사전연명의료의향서등록기관 #광주사전연명의료의향서
- echart
- 자바스크립트countiue
- ajax
- 썬크림 #닥터지썬크림 #내돈내산 #내돈내산썬크림 #썬크림추천 #spf50썬크림 #닥터지메디유브이울트라선
- 탭메뉴자바스크립트
- 증폭기 #아이피타임증폭기
- // 사진직: 데이터가 없으면 DEFAULT_IMG 사용 const profileSrc = (d.img && d.img !== "") ? d.img : DEFAULT_IMG;('#user-photo').attr('src'
- iptime와이파이증폭기 #와이파이증폭기설치
- jdk #jre
| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 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 |
글 보관함

