Spring에서 ModelAndView 대 Model을 언제 사용합니까?
이것은에 바보 들릴 수도 Spring
전문가,하지만 난 물어 봐야 :
당신은 어떻게 할 때 사용하는 방법에 대한 결정 할 ModelAndView
때 사용하는 Model
?
결국 내가 찾은 가장 좋은 대답은 이것 입니다. 그것은이 언급 한 ModelAndView
오래된 방법이며, Model
A를 String
반환은 새로운 방법입니다 Spring
.
제 질문은 ModelAndView
지금 우리가 Model
손에 들고 있는 옛 것을 비난 할까요? 아니면 사용해야 ModelAndView
하는 경우가 있습니까?
또한,이 변화에 왜 사람의 노하우는 않습니다 ModelAndView
에 Model
와 String
같은 가치 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
'IT Share you' 카테고리의 다른 글
시작시 배치 파일 실행 (0) | 2021.01.09 |
---|---|
Java OutOfMemoryError 이상한 동작 (0) | 2021.01.08 |
TortoiseSVN 정리는 실제로 무엇을합니까? (0) | 2021.01.08 |
@ RolesAllowed-Annotation의 값 매개 변수로 Enum 형식 사용 (0) | 2021.01.08 |
IE 호환 모드 : 'X-UA-Compatible'태그 'Edge' (0) | 2021.01.08 |