이티
425
2021-09-09 19:31:54
5
218

학원에서 스프링 공부중인 초본데 json에 대해 질문이있습니다.


json으로 컨트롤러에 데이터 보낼때 상황별로 실습을하고 있는데


클라이언트로 부터 요청시, json 배열을 jsonView 로 리턴하는 메소드,

클라이언트에게서 요청을 받으면, json 객체를 응답하는 메소드 등

하고 있습니다.

그런데 리턴 타입이 Strigng으로 할 때도 있고

ModelAndView로 할 때도 있고 ResponseEntity로 할 때도 있는데


이것들의 차이점을 모르겠습니다.

뷰에서 받은 데이터를 쓸때

다 비슷한 방식으로 쓰는거 같은데.. 차이점이 뭔가요?

0
  • 답변 5

  • cleannewbie
    107
    2021-09-09 22:05:06 작성 2021-09-09 22:19:01 수정됨

    안녕하세요. 저 역시 국비 출신으로 2년차입니다. 


    해당 지식은 Spring framework에서 View Resolver 와 연관되어 있는 부분입니다.

    https://docs.spring.io/spring-framework/docs/current/reference/html/web.html#mvc-viewresolver

    https://docs.spring.io/spring-framework/docs/current/reference/html/web.html#mvc-ann-return-types

    답은 ViewNameMethodReturnValueHandler 에서 아래의 메소드가 ModelAndView와 연결시켜줍니다.

    @Override
    public void handleReturnValue(@Nullable Object returnValue, MethodParameter returnType,
    ModelAndViewContainer mavContainer, NativeWebRequest webRequest) throws Exception {

    if (returnValue instanceof CharSequence) {
    String viewName = returnValue.toString();
    mavContainer.setViewName(viewName);
    if (isRedirectViewName(viewName)) {
    mavContainer.setRedirectModelScenario(true);
    }
    }
    else if (returnValue != null) {
    // should not happen
    throw new UnsupportedOperationException("Unexpected return type: " +
    returnType.getParameterType().getName() + " in method: " + returnType.getMethod());
    }
    }
  • cleannewbie
    107
    2021-09-09 22:08:31

    스프링이 그렇게 되어 있으니까.. 라고 대답해드리긴 좀 어렵고, 당장은 필요할때마다 찾아보시는걸 추천합니다

    전문적으로 다 아시는분은 없습니다..


    ResponseEntity 는 데이터 혹은 설정된 View Resolver로 전달되어지는 것 외에도 헤더나 스테이터스 값을 추가해서 보낼 수 있는 객체로 알고 있습니다. 써본적은 없네요


  • cleannewbie
    107
    2021-09-09 22:11:06

    지금 커스텀 해보시는것도 좋은 경험이지만


    개인적으로는 아 이렇게 동작하는구나 정도만 아시고 실무에가셔서 필요에 의해 작업할 때가 더 도움 되리라 생각합니다.

  • cleannewbie
    107
    2021-09-09 22:17:32

    https://stackoverflow.com/questions/29365833/what-are-valid-return-types-of-a-spring-mvc-controller-method


    이 것도 보시면 좋겠습니다.

  • 이티
    425
    2021-09-09 22:41:17

    cleannewbie

    친절한 답변 너무 감사합니다ㅜㅜㅜ 링크 하나하나 자세히 보겠습니다

     

  • 로그인을 하시면 답변을 등록할 수 있습니다.