초코딩(chocoding)

[Springboot] @ResponseBody의 사용 방식 / json에 대하여 / viewResolver 본문

SpringBoot

[Springboot] @ResponseBody의 사용 방식 / json에 대하여 / viewResolver

sweetychocoding 2024. 3. 27. 21:02
728x90
 @GetMapping("hello-mvc")
    public String helloMVC(@RequestParam("name") String name, Model model) {
        model.addAttribute("name", name);
        return "hello-template";
    }

 

위처럼 controller에서 요청을 보낼 시에 viewResolver을 통하여 처리

 

스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술 / 김영한

 


 

하지만, @ResponseBody를 사용할 시에 view를 거치지 않고 바로 데이터를 http body에 담아 전송

-> 뷰 리졸버( viewResolver )를 사용하지 않음

 

    @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의 형태로 전달됨

 

여기서 JSON이란 JavaScript Object Notation으로,

데이터를 저장하거나 전송할 때 많이 사용되는 경량의 data 교환 형식이다.

 

JSON 표현식은 사람과 기계 모두 이해하기 쉬우며,

용량이 작아 최근에는 XML을 대체하여 데이터를 전송할 때 많이 사용된다.

 

하지만 모든 데이터가 MappingJackson2HttpMessageConverter를 이용하는 것은 아님

GsonHttpMessageConverter 처럼 google이 만든 것도 있음

 

그럼 반환값이 객체 형태가 아니라 그냥 문자열일 때는?

-> StringHttpMessageConverter 사용

 

뿐만 아니라 byte 처리 등등 기타 여러 HttpMessageConverter가 기본으로 등록되어 있음

 

출처 :  스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술 / 김영한

 

 

 

 

 

 


느낀점

-> 이미 써본 어노테이션이고 대충 흐름을 알고 있지만, 정말 기초부터 다시 배우니 머릿 속에서 복잡하게 얽혀있던 내용들이 자리를 잡아가는 느낌이 들어 정말 정말 시작하길 잘했다는 생각을 했다.

그리고 IDE로 이클립스가 아닌 인텔리제이를 쓰면서 아직 작동법이 익숙하지 않아 구글링을 꽤 자주 해야했지만,

나중에 실무 들어갔을 때 코드짜야 되는데 인텔리제이 쓰는 법 구글링 하는 것보단 낫지 않나 생각이 들었다.

남들은 이미 써보고 편하다고 극찬하는 툴을 이제야 써보는 것도 ........ 할많하않 (... 하핫)

 

그래도 발전하고 싶어서 발버둥 치는 내 자신에게 칭찬해주고 싶다!!!!!

꾸준하게 꼼꼼하게 파이팅

 

728x90