스프링 프로젝트는 어떠한 폴더 구조를 이루고 있는지 살펴봅니다.
스프링 폴더 구조 이해하기
목차
1. 폴더 구성
- config
- controller
- dao
- dto
- mapper
- service
- utils
- vo
2. 각 폴더의 역할
- config
- 애플리케이션(스프링 프로젝트)의 설정 파일을 담고 있음
- jwt 토큰, security 설정 파일
- controller
- 클라이언트의 요청을 처리하고 응답을 생성하는 역할
- 클라이언트의 요청을 받는 최전선에 서 있으며, 다른 비즈니스 로직을 호출, 알맞은 응답을 생성 후 클라이언트로 전송
- dao
- Data Access Object의 약자. 데이터 베이스와 어플리케이션 같의 중간 연락책
- 데이터 베이스의 테이블 구조를 객체 구조로 표현하여 데이터 조작 수행
ex) 각 테이블의 컬럼 값들의 타입을 명시한 파일들 - dto
- Data Transfer Object의 약자. 데이터를 전송받거나 전송할 때의 객체의 형태 지정.
- Restful api 문서의 input, output의 형태를 맞춰줌
- ex) 클라이언트로 응답을 보낼 때에 맞춰줄 응답의 형태를 담은 파일들 - mapper
- MyBatis를 사용할 때, SQL 쿼리와 자바 메서드 간의 매핑을 담당.
- mapper.xml 파일에 쿼리문을 작성하고, mapper 폴더에는 해당 쿼리문을 실행하는 메서드의 형태를 작성
- ex) mapper 폴더에는 쿼리가 반환하는 형태, parameter의 타입, 메서드명 등이 명시된 파일들
- resource/mappers/000.xml에는 mapper 폴더에 작성된 메서드들의 구체적 쿼리문이 작성되어 있다. - utils
- 프로젝트 전반에 사용되는 공통 기능들을 담은 파일
- ex) 문자열 변환 메서드, 랜덤 비밀번호 생성 메서드 - vo
- 읽기 전용의 객체, 공통된 주제로 묶이는 데이터를 하나의 객체로 묶어서 다룸
- ex) 한 사람의 나이, 이름, 전화 번호등을 하나의 객체에 모두 담아서 다룸 - entity
- 데이터 값들을 객체 형태로 추상화하여 다른 곳에서 이용하게 쉽게 만들어 줌
- dao와 같이 데이터의 값들을 객체 형태로 추상화하는 과정은 같지만, entity는 추상화에서만 그친다는 점에서 차이 존재