일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
Tags
- S3
- logout
- GoormIDE
- 스프링부트
- jwt
- AWS
- 예외 처리
- ec2 nginx websocket reverse proxy
- presigned url
- Flask
- fastapi
- 이미지 업로드
- 구글 로그인
- springboot
- 자바 orm
- CustomException
- wss 연결 실패
- @Valid
- spring boot
- 도메인 주도 개발
- session
- 소셜 로그인
- 관점 지향 프로그래밍
- OpenAI API
- 개발 프로젝트
- spring websocket nginx 설정
- 패러다임 불일치
- validation
- oauth2.0
- 백준 10815 # 백준 Java
Archives
- Today
- Total
개발세발은 안되요
[스프링부트3개발자되기] 03장 : 스프링 부트3 구조 이해하기 본문
3.1 스프링 부트 3 구조 살펴보기
스프링 부트는 각 계층이 양 옆의 계층과 통신하는 구조를 따른다.
- 계층 : 각자의 역할과 책임이 있는 어떤 소프트웨어의 구성 요소.
- 각 계층은 서로 소통 가능.
- 각 계층은 다른 계층에 직접 간섭 또는 영향을 미치지 않음.
3.1.1 카페와 빵집으로 이해하는 계층
- 프레젠테이션 계층 → 컨트롤러에서 구현
: HTTP 요청을 받고 비즈니스 계층으로 전송함.
- 비즈니스 계층 → 서비스에서 구현
: 모든 비즈니스 로직 처리. 퍼시스턴스 계층에서 제공하는 서비스를 사용할 수 있고, 권한을 부여하거나 유효성 검사를 하기도 함.
- 퍼시스턴스 계층 → 리포지토리에서 구현
: 모든 스토리지 관련 로직을 처리함. 이 과정에서 DAO를 사용할 수도 있음.
프레젠테이션 계층
HTTP 요청을 받고 이 요청을 비즈니스 계층으로 전달. 컨트롤러가 해당 계층의 역할을 함. 컨트롤러는 스프링 부트 내에 여러개가 있을 수 있음.
비즈니스 계층
모든 비즈니스 로직을 처리함. 여기서 비즈니스 로직이란 서비스를 만들기 위한 로직으로 데이터를 처리하기 위한 로직, 예외 처리 로직, 최소 로직 등 웹 사이트에서 벌어지는 모든 작업을 구현하기 위한 로직을 의미함. 서비스가 비즈니스 계층의 역할을 함.
퍼시스턴스 계층
모든 데이터베이스 관련 로직을 처리함. 이 과정에서 DB에 접근하는 DAO 객체를 사용할 수 있는데, DAO란 데이터베이스 계층과 상호작용하기 위한 객체임. 리포지토리가 퍼시스턴트 계층의 역할을 함.
이러한 계층은 개념의 영역이고 컨트롤러, 서비스, 리포지토리는 실제 구현을 위한 영역이다.
3.1.2 스프링 부트 프로젝트 디렉터리 구성하며 살펴보기
- main : 실제 코드를 작성하는 공간. 소스 코드와 리소스 파일을 포함함.
- test : 프로젝트의 소스 코드를 테스트할 목적의 코드나 리소스 파일이 들어있음.
- build.gradle : 빌드를 설정하는 파일. 의존성이나 플러그인 설정 등 빌드에 필요한 설정을 할 때 사용.
- settings.gradle : 빌드할 프로젝트의 정보를 설정하는 파일.
3.2 스프링 부트 3 프로젝트 발전시키기
3.2.4 작동 확인하기
현재 인메모리 데이터베이스를 사용하고 있기 때문에 애플리케이션을 새로 실행할 때마다 데이터가 사라진다. 이를 해결하기 위해 애플리케이션을 실행할 때 원하는 데이터를 자동으로 넣는 작업을 수행한다.
3.3 스프링 부트 요청-응답 과정 한 방에 이해하기
1. 포스트맨에서 톰캣에 /test GET 요청을 함. 이 요청은 스프링부트 내로 이동.
2. 스프링 부트의 디스패처 서블릿이 URL을 분석하여 이 요청을 처리할 수 있는 컨트롤러를 찾음. TestController가 /test 라는 패스에 대 한 GET 요청을 처리할 수 있는 getAllMembers() 메서드를 가지고 있으므로 디스패처 서블릿은 이 컨트롤러에 요청을 전달함.
3. getAllMembers() 메서드와 요쳥이 매치됨. 그리고 메서드에서는 비즈니스 계층과 퍼시스턴스 계층을 통하면서 필요한 데이터를 가져 옴.
4. 뷰 리졸버는 템플릿 엔진을 사용해 HTML 문서를 만들거나 JSON 등의 데이터를 생성함.
5. members를 리턴하고 그 데이터를 포스트맨에서 볼 수 있음.
'책 > 스프링부트3 개발자 되기: 자바편' 카테고리의 다른 글
[스프링부트3개발자되기] 05장 : 데이터베이스 조작이 편해지는 ORM (0) | 2024.03.22 |
---|---|
[스프링부트3개발자되기] 04장: 스프링 부트 3과 테스트 (0) | 2024.03.21 |
[스프링부트3개발자되기] 02장 : 스프링부트 3 시작하기 (0) | 2024.03.21 |
[스프링부트3개발자되기] 01장 : 자바 백엔드 개발자가 알아두면 좋은 지식 (0) | 2024.03.21 |
[스프링부트3개발자되기] Ch00 (0) | 2024.03.21 |