1. 정적 컨텐츠
스프링부트에서는 정적 컨텐츠를 자동으로 제공합니다. 스프링 부트 프로젝트를 생성하면 자동으로 생성 되어있는 resources/ static 경로가 생성되어있는데, 해당 경로에 있는 파일들을 요청하면 우선순위를 가진 컨트롤러에서 매핑되는 컨트롤러가 있는지 검색 후
결과가 없으면 정적 컨텐츠 경로에서 요청자원을 검색 후 반환합니다.
어떠한 프로그래밍 작업없이 그대로 반환하지만, 이런식으로도 자원 요청이 가능합니다.
2. MVC와 템플릿 엔진
개요: Model, View, Controller의 복합어
MVC 패턴은 간략하게 말하자면 하나의 서비스에서 관심사들을 나누는 방법입니다. Model은 도메인만, Controller는 비즈니스 로직만, View는 Front쪽 만 담당하도록 합니다.
핵심은 viewResolver가 template안에서 해당 파일을 찾아서 템플릿 엔진이 Model로 받은 값(name:spring)을 렌더링해서 변환 후
반환해줍니다.
3. API
@ResponseBody
: 해당 어노테이션을 컨트롤러에 붙혀주면 http 프로토콜의 response body영역에 값을 바로 넣어주겠다는 의미입니다.
그렇기 때문에 따로 뷰가 존재하지 않고 페이지이동도 없습니다.
/* Controller */
@Controller("/api/hello")
@ResponseBody
public Hello helloApi(@RequestParam(value="name")String name;){
Hello hello = new Hello(name);
return hello;
}
Java
복사
요청
"localhost:8080/api/hello?name=spring!!!"
응닶결과
{ "name" : "spring!!!" }
JSON
복사
•
@ResponseBody 를 사용
◦
HTTP의 BODY에 문자 내용을 직접 반환
◦
viewResolver 대신 HttpMessageConverter 가 동작합니다.
◦
기본 문자처리는 StringHttpMessageConverter 를 사용하지만 객체가 반환되면 MappingJacson2HttpMessageConverter가 동작합니다.
◦
byte 처리 등등 여러 HttpMessageConverter가 기본으로 등록되어 있습니다.