복붙노트

[SPRING] Spring에서 ModelAndView와 Model을 사용할 때?

SPRING

Spring에서 ModelAndView와 Model을 사용할 때?

이것은 봄의 전문가에게는 바보처럼 들릴지 모르지만 나는 물어야한다. ModelAndView와 Model을 사용할시기를 어떻게 결정합니까?

결국 내가 찾은 최고의 답을 찾은 것은 이것입니다. ModelAndView는 오래된 방법이며 반환 된 String을 가진 모델은 Spring의 새로운 방법이라고 언급했습니다.

내 질문은 ModelAndView를 폐지하고 모델을 손에 넣었습니까? 또는 ModelAndView를 사용해야하는 경우가 있습니다.

또한 ModelAndView를 Model 및 String 값으로 View로 변경해야하는 이유와 그 이점은 무엇입니까?

해결법

  1. ==============================

    1.나는 항상 컨트롤러 메소드가 ModelAndView를 리턴하는 방식을 사용한다. 컨트롤러 메소드를 좀 더 간결하게 만드는 경향이 있기 때문입니다. 메서드 매개 변수는 이제 엄격하게 입력 된 매개 변수입니다. 그리고 모든 출력 관련 데이터는 메서드에서 반환 된 객체에 포함됩니다.

    나는 항상 컨트롤러 메소드가 ModelAndView를 리턴하는 방식을 사용한다. 컨트롤러 메소드를 좀 더 간결하게 만드는 경향이 있기 때문입니다. 메서드 매개 변수는 이제 엄격하게 입력 된 매개 변수입니다. 그리고 모든 출력 관련 데이터는 메서드에서 반환 된 객체에 포함됩니다.

    ModelAndView 스타일은 입력 매개 변수를 메서드로 업데이트하는 것을 좋아하지 않는 사람들과 공감하는 것 같습니다. 이것이 부작용을 구성 할 것이라는 믿음을 지키고, 위험한 패턴은 메소드가 할 일을 확실하게 예측할 수 없기 때문입니다. 반환 된 객체에서 데이터를 반환하거나 입력 인수에서 아무 것도 업데이트하지 못했을 수 있습니다.

    그래서 어떤 사람들은 여전히 ​​ModelAndView를 계속 선호 할 것입니다.

    Method 매개 변수로 Model을 사용하고 뷰 이름으로 문자열을 반환하는 새 스타일입니다. 약간 다른 디자인 접근법에서 온 것처럼 보입니다. 여기서 모델 객체는 렌더링 된 뷰로 돌아 오기 전에 여러 핸들러에 전달되는 이벤트 또는 항목의 일종으로 간주됩니다. AWT / Swing 세계에서 이벤트가 처리되는 방법을 생각 나게합니다. 이 모델은 여러 개의 핸들러가 뷰에 도달 할 때까지 Model 객체 위에 구축 할 수있는 접근 방식에보다 일관성이 있습니다.

    따라서 하루가 끝날 때 어느 쪽의 방법을 비판하거나 승격시킬 확실한 이유가없는 것 같습니다. 전체 디자인 철학과 일관성이있는 스타일을 사용해야합니다.

    희망이 도움이됩니다.

  2. ==============================

    2.하나의 차이점은 ModelAndView 객체를 사용하면 뷰 객체에 대한 직접 참조를 설정할 수 있다는 점입니다.

    하나의 차이점은 ModelAndView 객체를 사용하면 뷰 객체에 대한 직접 참조를 설정할 수 있다는 점입니다.

    ModelAndView mav = ...
    mav.setView(myView);
    

    반면 Model 및 String을 사용하는 경우보기 이름을 실제보기로 확인하는보기 확인자가 필요합니다.

    public String myHandler(...) {
       return "myviewname"; // has to have a resolver from "myviewname" into an actual view
    }
    
  3. ==============================

    3.SEO 관점에서 우리는 ModelAndView를 사용하여 301 리디렉션을 적용 할 수 있습니다. 요구 사항이 있으면 Model을 사용하여이를 수행 할 수 없습니다.

    SEO 관점에서 우리는 ModelAndView를 사용하여 301 리디렉션을 적용 할 수 있습니다. 요구 사항이 있으면 Model을 사용하여이를 수행 할 수 없습니다.

  4. from https://stackoverflow.com/questions/16951609/when-to-use-modelandview-vs-model-in-spring by cc-by-sa and MIT license