스프링 입문-기초

서론

김영한 강사님의 스프링 강의를 듣기 시작했다. 내가 강의를 들으며 중요하다고 느낀 부분 등을 정리하여 간단하게 올려볼 예정이다.

정적 컨텐츠

Spring에서 화면에 데이터를 띄우는 방법은 크게 3가지가 있는데, 정적 컨텐츠, MVC 구조, API 가 있다.
정적 컨텐츠는 HTML 데이터 등을 바로 화면에 출력하는 것이다.

정적 컨텐츠

브라우저에서 요청을 받았을 때 스프링 컨테이너에 등록된 컴포넌트들 중에 관련된 컨트롤러가 없다면, resources/static 경로에서 요청과 같은 이름의 데이터를 바로 화면에 출력해 준다.

MVC 구조

Model, View, Controller 구조와 템플릿 엔진을 사용하면 동적 컨텐츠를 만들 수 있다.

mvc

브라우저에서 요청을 받았을 때 스프링 컨테이너의 컴포넌트들 중 @GetMapping 으로 요청과 맵핑되어 있는 컴포넌트가 있다면 자동으로 해당 컴포넌트와 연결된다. 연결받은 컨트롤러는 String 값과 model을 스프링 내부의 viewResolver에 넘겨준다.
viewResolver는 String 값과 같은 이름의 파일을 resources/templates 경로에서 찾아 파일을 HTML로 변환하여 화면에 띄워준다.
해당 파일은 템플릿 엔진(Thymeleaf) 등을 이용하였으므로, 모델이 갖고있는 value값에 따라 다른 값을 화면에 출력해주는 동적 컨텐츠가 된다.

API 이용

MVC 구조 대신 API를 이용하여 화면을 출력할 수도 있다. @GetMapping 밑에 @ResponseBody 어노테이션을 사용하고 객체를 반환하면, viewResolver 대신 HttpMessageConverter로 연결된다.

api

해당 방식을 사용하면 이전에 배웠던 HTTP 메시지의 바디 파트에 데이터 내용을 직접 넣어 반환한다. 클라이언트의 HTTP Accept 해더와 컨트롤러의 반환 타입에 따라 HttpMessageConverter가 선택된다.
객체를 넣으면 JSON으로 변환해주고 String을 넣으면 그대로 HTTP 메시지로 변환된다.