정적 컨텐츠는 말그대로 resources/static에 파일을 만들어주면 그 파일 자체를 웹브라우저에 띄어주는 방법이다.
간단하게 설명해서 localhost:8080/hello-static.html을 입력하면 내장 톰캣서버가 받고 요청이 들어왔다고 스프링한테 넘긴다. 그리고 스프링 컨테이너에서 hello-static에 관련 컨트롤러가 있는지 제일 먼저 확인한다. 그리고 컨트롤러가 없을시에 static/hello-static을 찾고 바로 반환한다.
Controller는 비지니스 로직만, view는 보여주는 것만 model은 view로 넘겨줘서 랜더링할 때 쓰는 파라미터이다.
톰켓이 localhost:8080/hello-mvc 를 브라우저로 부터 받으면 스프링 컨테이너에 받았다고 알린다. 그러면 스프링에서 컨트롤러에 매핑이 되어 있는지를 확인 후 있으면 return 값과 파라미터를 확인 후 model에 넣어서 viewResolver(view를 찾아주고 템플릿 엔진을 연결 시켜주는 역할을 함)로 보내준 후 viewResolver에서 값을 변환 후 반환한다. 위의 정적 컨텐츠는 수정이 되지않지만 mvc같은 경우는 변환이 가능하다.
톰켓에서 hello-api를 받으면 스프링 컨트롤러에 있는지 찾아본다. 이때 @ResponseBody라는 에너테이션이 없으면 mvc 템플릿 처럼 viewresolver에게 갈텐데 @RestponseBody가 있기 때문에 http 응답 body에 데이터를 그대로 넣는 방식이 된다. 그런데 객체를 반환 하게 되면 스프링에서는 이경우에 디폴트가 json 방식으로 http에 응답하게 되있다. 그래서 @ResponseBody가 있기 때문에 HttpMessageConverter가 동작하고 객체를 반환하기 때문에 JsonConverter가 동작한다. 이때 문자를 반환하면 StringConverter가 동작한다.