목표
본격적으로 스프링부트를 사용하여 프로젝트를 만들기 전에, 스프링부트는 어떠한 프로젝트의 구조를 가지는지 파악해보자.
Layer

위 사진에 보이는 것처럼 스프링부트는 3가지 Layer가 존재하며 이들이 프로젝트의 구조를 담당한다.
- Web Layer:
- 컨트롤러, 필터, 인터셉터가 대표적인 웹 레이어
- 이들은 외부 요청에 직접적으로 관여하는 부분이다.
- Service Layer:
- 컨트롤러와 리포지터리(저장소) 사이에 존재
- 컨트롤러가 호출하는 비즈니스 로직이 존재
- 트랜잭션 (@Transactional)
- Repository Layer:
- DB 에 접근하는 인터페이스 (JPA의 @Repository)
- Domain Model
- DB와 관련된 비즈니스 로직 처리
- JPA의 @Entity가 사용되는 영역

폴더 구조

참고
Spring boot 패키지 구조