IT Share you

Spring에서 ModelAndView 대 Model을 언제 사용합니까?

shareyou 2021. 1. 8. 21:48
반응형

Spring에서 ModelAndView 대 Model을 언제 사용합니까?


이것은에 바보 들릴 수도 Spring전문가,하지만 난 물어 봐야 :
당신은 어떻게 할 때 사용하는 방법에 대한 결정 할 ModelAndView때 사용하는 Model?

결국 내가 찾은 가장 좋은 대답은 이것 입니다. 그것은이 언급 한 ModelAndView오래된 방법이며, ModelA를 String반환은 새로운 방법입니다 Spring.

제 질문은 ModelAndView지금 우리가 Model손에 들고 있는 옛 것을 비난 할까요? 아니면 사용해야 ModelAndView하는 경우가 있습니까?

또한,이 변화에 왜 사람의 노하우는 않습니다 ModelAndViewModelString같은 가치 View와 이점은 무엇입니까?


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

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

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

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

따라서 결국에는 두 가지 접근 방식 중 하나를 비판하거나 홍보 할 명확한 이유가없는 것 같습니다. 전체적인 디자인 철학과 좀 더 일관된 스타일을 사용해야합니다.

도움이 되었기를 바랍니다.


내가 발견 할 수있는 한 가지 차이점은 ModelAndView 개체를 사용하여보기 개체에 대한 직접 참조를 설정할 수 있다는 것입니다.

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

반면에 Model 및 String을 사용하는 경우 뷰 이름을 실제 뷰로 확인하려면 뷰 리졸버가 필요합니다.

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

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


@RequestMapping("/")
public ModelAndView AWBCOntroller() {
    log.info("Tracking info");
    ModelAndView mav = new ModelAndView();
    mav.setViewName("index");
    return mav;

}

참조 URL : https://stackoverflow.com/questions/16951609/when-to-use-modelandview-vs-model-in-spring

반응형