스프링 입문2 (코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술)(feat.김영한 강사님)

권영태·2023년 5월 1일
0

스프링

목록 보기
2/18
post-thumbnail

Project : Gradle-Groovy Project
JDK : JAVA 17
Spring Boot Version : 3.0.6
Dependencies : Spring Web, Thymeleaf, H2database
IDEA : IntelliJ IDEA

저번 시간 스프링 기본 개념 및 MVC, 동적 환경 그림을 이해했다.
오늘은 정적 컨탠츠 및 API 그리고 애플리케이션 계층 구조를 이해해보자.

⏹️ 정적 컨텐츠

  • 스프링 부트는 정적 컨텐츠를 자동 제공해준다.
    즉, ViewResolver가 필요 없다.
    1. 웹 브라우저에서 hello-static.html을 내장 톰켓 서버에 요청
    2. 내장 톰켓 서버는 스프링 부트 안 스프링 컨테이너에 전달
    3. 스프링 컨테이너 안 hello-static 관련 컨트롤러 안 매핑되는 것이 없어 resources로 이동
    4. resources.static에서 찾아 정적 컨텐츠(hello-static.html)을 전달

⚙️ REST API

  • API란 응용 프로그램들이 서로 통신할 수 있는 일련의 규칙이다.

  • REST API란 JSON 데이터 구조 포맷으로 클라이언트에게 전달하는 행위
    한마디로 데이터를 그대로 내려준다.

    • REST API 설계 시 2가지 규칙을 지켜야한다.
      1) URI는 정보의 자원을 표현해야 한다.
      2) 자원에 대한 행위는 HTTP Method(GET, POST, PUT, DELETE)로 표현한다.
  • JSON이란 Key-Value방식으로 데이터를 주고 받을 때 그 자료를 표현하는
    방법이다.

    1. @ResponseBody : HTTP Body 부분에 데이터 추가하는 어노테이션
    2. “hello“ + name 이 전달 되어 출력

    객체(데이터)를 생성하여 반환

    1. 웹 브라우저가 hello-api를 내장 톰켓 서버에 요청
    2. 내장 톰켓 서버는 helloController안 매핑되는 메서드(helloapi)로 전달
    3. @ResponseBody 어노테이션을 보고 HTTP 응답 그대로 데이터를 넘겨야된다고 확인

      1) HTTP의 BODY에 문자 내용을 직접 반환
      2) viewResolver 대신에 HttpMessageConverter가 동작
      3) 기본 문자처리 : StringHttpMessageConverter
      4) 기본 객체처리 : MappingJackson2HttpMessageConverter
      5) byte 처리 등등 기타 여러 HttpMessageConverter가 기본 등록
      6) 참고로 클라이언트의 HTTP Accept 해더와 서버의 컨트롤러 반환 타입 정보 둘을 조합해 HttpMessageConverter가 선택된다.

    4. 객체를 HttpMessageConverter에 전달 후 HttpMessageConverter는
      객체(Json)인지 문자열(String)인지 확인하여 해당 Converter를 동작시켜 변환
    5. 변환 값 그대로 웹 브라우저에 응답

🪜일반적인 웹 애플리케이션 계층 구조

  • 컨트롤러 : MVC 중 Controller를 담당
  • 서비스 : 핵심 비즈니스 로직 담당
  • 리포지토리 : 실질적으로 DB에 접근하여, 도메인 객체를 DB에 저장ㆍ관리
  • 도메인 : 비즈니스 도메인 객체

다음 시간에는 아래 요구사항 정리를 바탕으로 회원 관리 예제를 만들어본다.

데이터 : 회원ID, 이름
기능 : 회원 등록, 조회
아직 데이터 저장소가 선정되지 않음(가상의 시나리오)

profile
GitHub : https://github.com/dudxo

0개의 댓글