태터데스크 관리자

도움말
닫기
적용하기   첫페이지 만들기

태터데스크 메시지

저장하였습니다.

Spring에서 json포멧으로 결과를 출력하는 다양한 방법이 존재 합니다. 


가장 간단한거로는 ModelAndView에서 출력하는 View를  json포멧으로 수동으로 찍어주는 방법도 있구요. 


View를 상속받은 JsonView 같은 거를 만들거나 라이브러리를 사용하여 Controller에서 리턴해주는 방법도 있구요. 


ViewResolver에서 JacksonJsonView를 매핑하여 사용하는 방법도 있습니다. 3.1버전 이상에서 부터 지원됐던걸로 기억합니다. (확인필요)

<bean class="org.springframework.web.servlet.view.ContentNegotiatingViewResolver">
  <property name="mediaTypes">
    <map>
      <entry key="atom" value="application/atom+xml"/>
      <entry key="html" value="text/html"/>
      <entry key="json" value="application/json"/>
    </map>
  </property>
  <property name="viewResolvers">
    <list>
      <bean class="org.springframework.web.servlet.view.BeanNameViewResolver"/>
      <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
        <property name="prefix" value="/WEB-INF/jsp/"/>
        <property name="suffix" value=".jsp"/>
      </bean>
    </list>
  </property>
  <property name="defaultViews">
    <list>
      <bean class="org.springframework.web.servlet.view.json.MappingJacksonJsonView" />
    </list>
  </property>
</bean>


Gson이라는 Google에서 만든 Json라이브러리를 사용하기위하여 찾아보던중에... 발견한것인데요.   Spring4.1 버전에서 부터는 각종 message converter를 기본 지원하기 시작하는데요... 그중에 Gson도 지원을 하기 시작했습니다. 


따라서 간단한 설정만으로 기존 오브젝트들을 간단히 json포멧으로 변경이 가능합니다. 


예를 들면 

<bean id="gsonHttpMessageConverter" class="org.springframework.http.converter.json.GsonHttpMessageConverter"/>


설정을 추가 하고, 


controller에서 @ResponseBody 어노테이션을 추가해주면 


@RequestMapping(value = "/user/list", produces = MediaType.APPLICATION_JSON_VALUE)

@ResponseBody

public ResponseBean listUser(

            @RequestParam(value = "page", defaultValue = "0") int page,

            @RequestParam(value = "keyword", defaultValue = "") String keyword) {


        int pageSize = 10;


        List<User> users = null;

        if (keyword.equals("")) {

            users = userService.getList();

        }

        return new ResponseBean(ResponseCode.SUCCESS, users);

    }


결과값이 json으로 변환되어 출력이 됩니다. 


@ResponseBody에 대한 추가적인 정보나,  Jackson을 이용한 방법은 다음 주소에서 확인하세요.


http://ismydream.tistory.com/140



spring4.1이 아직 stable버전이 나오지 않았다는 것은 함정.  ㅋㅋ 


물론 Jackson을 사용한 같은 방식도 이미 전부터 지원을 했습니다만 4.1 부터는 Gson도 지원합니다. 










Posted by Breeze.Kang

댓글을 달아 주세요

  1. swagger 검토해보삼. api 명세 + test web form 이 그냥 뚝딱 만들어진당께~

    http://blog.zenika.com/index.php?post/2013/07/11/Documenting-a-REST-API-with-Swagger-and-Spring-MVC

    2014.08.11 17:28 신고 [ ADDR : EDIT/ DEL : REPLY ]