백엔드 개발/Spring&JPA

spring 개발 기초 방식 3가지

태기 2023. 3. 1. 20:52

1. 정적 콘텐츠

hello-static.html을 내장 톰켓 서버에 요청한다.

여기서 스프링은 먼저 hello-static 관련된 컨트롤러가 있는지 찾아본다.

없으면 resources에서 static 폴더에 hello-static.html 이 있는지 확인하고 반환해주는 것이다.

 

2. MVC와 템플릿 엔진

helloController에 hello-mvc가 mapping이 되는지 확인하고 그 메서드에서 hello-template로 반환한다.

viewResolver(View를 찾아주고 template을 연결해주는 역할을 함)라는 곳에서 데이터를 받아서 templates 폴더에 있는 hello-template.html을 thymeleaf에 넘겨준다.

데이터를 처리하고 html을 변환한 다음 웹에 보여지게 된다.

 

3. API

MVC와 비슷하게 적용한다.

@ResponseBody 를 사용하면 HTTP의 Body에 문자 내용을 직접 반환한다.
그럼 viewResolver 대신에 HttpMessageConverter가 동작한다.

만약 문자열이 들어오면 StringConverter(StringHttpMessageConverter),

객체가 들어오면 JsonConverter(MappingJackson2HttpMessageConverter)로 처리한다.

>> 기본 문자처리 : StringHttpMessageConverter

>> 기본 객체처리 : MappingJackson2HttpMessageConverter

byte 처리 등등 기타 여러 HttpMesageConverter가 기본으로 등록되어 있다.

 

 

Tip.

- json 처리하는데 대표적인 라이브러리 2가지 : 1. Jackson    2. Gson

- 클라이언트의 HTTP Accept 헤더와 서버의 컨트롤러 반환 타입 정보 둘을 조합해서 'HttpMessageConverter'가 선택된다.