03 스프링 부트 3 계층 구조

hyHA·2023년 12월 15일
0
post-custom-banner

전 장에서는 스프링의 주요 개념을 대략적으로 파악했다면,
이번에는 스프링 부트가 어떤 식으로 HTTP 요청을 받고 응답을 반환하는지 구조를 살펴본다.
스프링 MVC 구조로 알고있던 개념을 계층적으로, 그리고 이를 구현한 클래스로 설명을 하였다.
코드로는 어떤 디렉토리로 이루어져 있는지 대략적으로 알 수 있었다.
마지막에는 요청-응답사이클이 가볍게 나오는데 이 부분은 하나씩 뜯어서 포스팅으로 다룰 예정이다.

계층 구조

스프링 부트는 각 계층이 양 옆의 계층과 통신하는 구조를 가지고 있다

각 계층의 의미와, 계층을 구현한 클래스는 아래와 같다.

계층(개념)구현역할
프레젠테이션 계층컨트롤러http 요청을 받고 비즈니스 계층으로 전송
비즈니스 계층서비스비즈니스 로직
퍼시스턴스 계층엔티티,DAO,리포지토리데이터베이스 관련 로직
DB에 접근, 데이터 반환
  • DAO : DB 테이블에 접근할 때 사용할 객체
  • 리포지토리 : DB에서 데이터를 가져오는 객체로 DB 테이블과 클래스를 매핑한다

디렉터리 구조

main

  • java
    • 컨트롤러, 서비스, 리포지토리 등 작성한 코드들
  • resources/static
  • resources/application.yml
    • 스프링 부트 설정 파일.
    • 데이터베이스 설정 정보, 로깅 설정 정보, 직접 설정을 정의
    • 스프링 부트 서버가 실행되면 자동으로 로딩되는 파일.

test

build.gradle

의존성 추가

settings.gradle

]빌드할 프로젝트의 정보를 설정

더미 데이터 만들기

  1. resources/data.sql
INSERT INTO member (id,name) VALUES (1, 'name1')
  1. application.yml
spring:
	jpa:
		# 앱 실행 과정에서 데이터베이스에 전송된 쿼리 확인
		show-sql: true
		properties:
			hibernate:
				format_sql: true

		# 테이블 생성 후 data.sql 실행
		defer-datasource-initialization: true
  1. 콘솔 창으로 확인
    ctrl+f로 create table 있는지 확인
  2. 포스트맨으로 확인
    회원 정보를 얻을 수 있는 url로 접속 후 sql로 등록한 멤버 확인

스프링 부트 요청 - 응답 사이클

  1. 포스트맨
    포스트맨에서 톰캣에 요청(요청이 스프링 부트 내로 이동)
  2. 디스패처 서블릿
    url을 분석하고 요청을 처리할 컨트롤러에 넘김
  3. 컨트롤러>서비스>리포지토리
    요청 처리
  4. 뷰 리졸버
    템플릿 엔진을 사용해 HTML문서를 만들거나 JSON, XML 데이터 생성

참고
Servlet과 Dispatcher Servlet
톰캣

profile
룰루랄라
post-custom-banner

0개의 댓글