@ResponseBody : 문자 반환
@Controller
public class HelloController {
...
@GetMapping("hello-string")
@ResponseBody
public String helloString(@RequestParam("name") String name) {
return "hello " + name;
}
}
@ResponseBody
란? viewResolver
를 사용하지 않고 http 통신 프로토콜의 BODY에 문자(return 이하)를 직접 넣어준다.
- 크게... 쓸모는 없음.
@ResponseBody : 객체 반환
@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;
}
}
}
@ResponseBody
를 사용하고 객체를 return 하면 객체가 JSON 으로 변환됨.
- 요즘에는 주로 객체를 반환하는 방식을 사용한다.
@ResponseBody 사용 원리
- 웹 브라우저에서 localhost:8080/hello-api 를 톰캣에 던지면 톰캣이 스프링의 컨트롤러에 넘긴다.
- 컨트롤러에서
@ResponseBody
어노테이션이 붙은 것을 확인하고 viewResolver
대신 HttpMessageConverter
를 동작하게 한다.
- 기본 문자 처리 :
StringHttpMessageConverter
- 기본 객체처리 :
MappingJackson2HttpMessageConverter
- 웹 브라우저 또는 다른 서버에 JSON / String 을 반환해준다.