@ResponseBody
스프링 어노테이션
HTTP에는 header 와 body 가 있음. (HTML <body> 아님)
// HTTP? header 와 body 란?
- 내용 추가 예정 (링크 형태로)
@ResponseBody 가 붙은 메서드의 return 값을
HTTP의 body 에 직접 넣겠다는 의미임.
이를 통해 반환된 페이지는
html 태그고 뭐고 아무것도 없이 그냥 진짜 return 값만 반환됨.
@ResponseBody
@GetMapping("hello-string")
public String helloString(@RequestParam("name") String name){
return "hello" + name;
}
그럼 그냥 문자열 말고...
데이터를 반환해야 한다면?
@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;
}
static class Hello 를 만들어
public Hello helloApi() 메서드에서 객체를 생성하고,
Hello 클래스의 인스턴스(객체)인 hello 를 반환 했더니!!!!
?????????????????????
왜 JSON 형식으로 반환 됐지???????????
@ResponsBody 를 사용하면
HTTP 의 BODY 에 메서드의 리턴값을 직접 반환한다.
@ResponsBody 가 없다면 ViewResolver 가 동작하고,
@ResponsBody 가 있다면 ViewResolver 대신 HttpMessageConverter 가 동작한다.
HttpMessageConverter 은
반환 값이 문자라면 StringHttpMessageConverter 가 실행되고
반환 값이 객체라면 MappingJackson2HttpMessageConverter 가 실행된다.
문자, 객체 외에 다양한 HttpMessageConverter 가 기본적으로 등록되어 있다.
참고자료
스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술 <김영한>
'스프링' 카테고리의 다른 글
@ResponseBody (0) | 2022.12.19 |
---|---|
[Spring] JPA Auditing (0) | 2022.12.18 |
[Spring] 인증과 인가 (0) | 2022.12.17 |
애노테이션 몇 개 (0) | 2022.12.16 |
[Spring] Cause: error: invalid source release: 17 (0) | 2022.12.07 |
댓글