Spring boot architecture, layers, DTO
✅ Spring files
스프링부트에서는 스프링을 실행하는게 아니라 ❌
내장 톰캣서버를 실행하는 것이다. 🐈
✔️ yaml file
application 설정을 도와주는 파일
이제는 application.properties 파일 형식 아니고❌
application.yaml을 사용할 것임⭕️
👍🏻 .yaml 형식 장점 가독성, profile 사용하기 용이
✅ Profile 설정
✔️ 대표 개발 단계
개발 단계에 따라 profile을 분리해 관리할 필요가 있다.
1️⃣ local: 개발자가 개발하고 있는 단계
2️⃣ dev: 여러 개발자들이 개발한 것을 합치고 있는 단계
3️⃣ prod: 사용자에게 제공되고 있는 서비스
그리고 이 개발 단계에 따라 profile을 분리하는데, profile 별로 application.yaml 따로 구성해서 관리한다
✅ Code architecture
코드 아키텍쳐: 소프트웨어의 구조/구성을 조직적으로 정리하는 것
코드를 효율적으로 관리하기 위함
✔️ Code architecture 종류
- Clean architecture
- Domain driven Development
- 3 layer architecture
✅ Spring code architecture: 3-layered 🟰 3 tier
3-layered: 전체를 3가지 논리적 계층으로 구성하고, 각 계층이 자신의 역할/책임을 가지는 구조
각 접점을 하나의 계층으로 빼고, 각 계층이 자기 역할을 한다.
👍🏻 외부에서 수정 요청이 들어오면 그 계층만 수정하면 되니까
👍🏻 괜히 코드 수정하다가 다른 부분은 건드리지 않도록
✔️ Web layer(🟰Presentation Layer)
외부(client/dispatcher servlet)과 맞닿아 있는 레이어
외부 요청/응답의 접점에 위치한다.
✔️ Service layer
비즈니스 로직을 실제로 처리함
✔️ Repository layer(🟰Data Access Layer)
데이터 베이스와 상호작용하는 레이어
config는 web, service, respository 어디에도 속하지 않는 파일 넣으려고 만들었음
⭐️ SpringBoot 직렬화: Jackson 라이브러리
Jackson 라이브러리: DTO ↔️ JSON 직렬화/역직렬화 하는 라이브러리
Jackson이 getter을 사용해서 DTO를 JSON으로, JSON을 DTO로 바꿔준다.