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에 포함시키지 않는다.