유데미 X 웅진 STARTERS 취업 부트캠프 백엔드 3기 - 10주차 학습 일지_스프링 웹 계층 구조

zwundzwzig·2023년 1월 28일
0
post-thumbnail

웹 개발 종류

  1. 정적 컨텐츠
    : 서버에서 HTML 파일을 그대로 웹 브라우저에 주는 것
    : resources/static 폴더 내부에 저장
    : url주소/파일명.html 하면 웹 브라우저에서 볼 수 있음
    : SSR 형태

  2. MVC + 템플릿 엔진(ex. JSP, 타임리프..)
    : 서버에서 HTML을 동적으로 변경해 웹 브라우저에 전달
    : resources/templtes/{ViewName}.html 폴더에 저장
    : SSR 형태
    : 컨트롤러는 최종적으로 결과를 출력할 뷰와 뷰에 전달할 객체를 담는 ModelAndView 객체를 리턴
    ⬇️
    DispatherServlet은 ViewResolver로 결과를 출력할 View 객체를 구현하고, 해당 객체로 내용 생성.

  3. API
    : HTTP API처럼 JSON 데이터를 HTTP 메시지 바디 내 직접 읽거나 쓰는 경우 사용
    : @ResponseBody 어노테이션으로 HTTP Body에 문자를 담아 HttpMessageConverter 동작
    : 이외에도 String 문자 처리에는 StringHttpMessageConverter, 객체 처리에는 MappingJackson2HttpMessageConverter 사용

  • JsonConverter에는 2가지 종류의 라이브러리 존재
  • Jackson (Spring default), gson (Google)

웹 애플리케이션 계층 구조

  • 컨트롤러 : 웹 MVC의 컨트롤러 역할, 중간 제어자 개념. Service나 Domain으로 로직 전달. HTTP 요청과 요청 데이터를 체크, 인증 담당.
    @Controller : View를 반환, 전통적인 MVC에서 사용됨.
    @RestController : REST API 사용할 때 사용됨.
  • 서비스 : 핵심 비즈니스 로직 구현
  • 도메인 : 기획의 요구사항을 구현하고, 문제를 풀기 위해 설계된 소프트웨어 프로그램의 기능성을 정의하는 영역
    - 도메인 레이어의 결과가 도메인 모델
  • 리포지토리 : 데이터베이스 쿼리문을 담당

Interface 를 통한 느슨한 결합

특정 데이터 저장소가 선정되지 않을 때, 인터페이스로 구현 클래스를 변경할 수 있도록 설계
초기 개발 단계에서 구현체로 DB 가 아닌 메모리 기반의 데이터 저장소 사용
🚫 의존성 주입 개념과 연관!


본 후기는 유데미 X 웅진씽크빅 취업 부트캠프 3기 백엔드 과정 학습 일지 리뷰로 작성되었습니다.

유데미 바로가기 / STARTERS 취업 부트캠프 공식 블로그 보러가기

🧷 참고 교재

profile
개발이란?

0개의 댓글