@Controller
public class HelloController {
@GetMapping("hello-string")
@ResponseBody
public String helloString(@RequestParam("name") String name) {
return "hello " + name;
}
}
http://localhost:8080/hello-string?name=spring
@Controller
public class HelloController {
@GetMapping("hello-api")
@ResponseBody
public Hello helloApi(@RequestParam("name") String name) {
Hello hello = new Hello();
hello.setName(name);
return hello;
}
static class Hello {
private String name;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
} }
}
Json방식으로 화면에 표출된다.
풀어서 설명한다면,
@ResponseBody라고 오면 hello객체를 반환한다. 그 후 @ResponseBody일땐 HttpMessageConverter가 동작을 한다. 이때 HttpMessageConverter는 반환한 것이
String일땐 StringConverter가, 객체일땐 JsonConverter가 기본으로 동작한다.JsonConverter는 객체를 Json타입으로 변환해서 요청한 웹브라우저에게 반환하다.
정리하자면 아래와 같다.
참고 : 클라이언트의 HTTP Accept 해더와 서버의 컨트롤러 반환 타입 정보 둘을 조합해서 HttpMessageConverter 가 선택된다.