GW LABS

스프링 부트 핵심 가이드 (2) - 개발에 앞서 알면 좋은 기초 지식 본문

Book-Review/Programing

스프링 부트 핵심 가이드 (2) - 개발에 앞서 알면 좋은 기초 지식

GeonWoo Kim 2022. 8. 11. 17:55

2.2 스프링 부트의 동작 방식

  • 서블릿: 클라이언트의 요청을 처리하고 결과를 반환하는 자바 웹 프로그래밍 기술
  • 서블릿 컨테이너: 서블릿 인스턴스를 생성하고 관리
    • 서블릿 객체를 생성, 초기화, 호출, 종료하는 생명주기 관리
    • 서블릿 객체는 싱글톤 패턴으로 관리
    • 멀티 스레딩을 지원
    • 스프링에서는 DispatcherServlet이 서블릿의 역할 수행
  • 요청 FLOW
    • DispatcherServlet으로 요청(HttpServletRequest)가 들어옴
    • DispatcherServlet이 핸들러 매핑을 통해 URI에 매핑된 핸들러(Controller)를 탐색
    • 핸들러 어댑터로 컨트롤러 호출
    • 핸들러 어댑터에 컨트롤러 응답이 돌아오면 ModelAndView 응답을 가공해 반환
      • 뷰 형식으로 리턴하는 컨트롤러를 사용할 때에는 뷰 리졸버를 통해 뷰를 받아 리턴
      • RestController의 경우 뷰 리졸버를 사용하지 않고 MessageConverter를 통해 응답수행

2.3 레이어드 아키텍처

  • 프레젠테이션 계층
    • 클라이언트와의 접점
    • 클라이언트로부터 데이터와 함께 요청을 받고 처리 결과를 응다븡로 전달
  • 비즈니스 계층
    • 서비스 계층
    • 핵심 비즈니스 로직을 구현하는 영역
    • 트랜잭션 처리/유효성 검사 등의 작업도 수행
  • 데이터 접근 계층
    • 영속성 계층
    • 데이터베이스에 접근하는 작업 수행

2.5 REST API

  • REST: 주고받는 자원에 이름을 규정하고 URI에 명시해 HTTP 메서드로 자원의 상태를 주고 받는 것
  • 특징
    • 유니폼 인터페이스: 일관된 인터페이스를 갖고 있음(HTTP)
    • 무상태성: 서버는 클라이언트가 보낸 요청에 대해 세션이나 쿠키정보를 보관하지 않음
    • 캐시 가능성: HTTP의 캐싱 기능 적용가능
    • 서버-클라이언트 아키텍처: 서버와 클라이언트의 의존성을 낮춤
  • 설계 규칙
    • 마지막에는 ‘/’를 포함하지 않는다.
    • 언더바를 사용하지 않고 하이픈을 사용한다.
    • 행위가 아닌 결과를 포함한다
    • URI는 소문자로 작성한다.
    • 파일의 확장자는 URI에 포함시키지 않는다.
Comments