@ResponseBody 문자 반환

@Controller
public class HelloController {

    @GetMapping("hello-string")
    @ResponseBody
    public String helloString(@RequestParam("name") String name) {

        return "hello" + name;
    }
}

@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;
        }
    }
}
{"name":"spring!!!!!"}
  • 이렇게 Json형식으로 나옴


@ResponseBody 사용 원리

  • @ResponseBody를 사용
    • HTTP의 Body에 문자 내용을 직접 반환
    • viewResolver대신에 HttpMessageConverter가 동작
    • 기본 문자처리 : StringHttpMessageConverter
    • 기본 객체처리 : MappingJackson2HttpMessageConverter
    • byte처리 등 기타 여러 HttpMessageConverter가 기본으로 등록되어 있음
  • 참고
    • 클라이언트의 HTTP Accept Header와 서버의 컨트롤러 반환 타입 정보 . 둘을 조합해서 HttpMessageConverter가 선택된다.

Leave a comment