ModelAndView를 반환하는 방법
@RequestMapping(value = "/list", method = RequestMethod.GET)
public ModelAndView list(
@UserAuth UserAuth user,
ModelAndView mav) {
if (!user.isAuthenticated()) {
mav.setViewName("redirect:http://www.test.com/login.jsp");
return mav;
}
mav.setViewName("list");
mav.addObject("articles", listService.getLists());
return mav;
}
반환 방법 String
@RequestMapping(value = "/list", method = RequestMethod.GET)
public String list(
@UserAuth UserAuth user,
Model model) {
if (!user.isAuthenticated()) {
return "redirect:http://www.test.com/login.jsp";
}
model.addAttribute("articles", listService.getLists());
return "list";
}
이것들은 동일하게 작동합니다. 어느 쪽이 더 좋은 방법입니까? 그리고 차이점은 무엇입니까?
답변
더 좋은 방법은 없습니다. 둘 다 완벽하게 유효합니다. 어떤 것을 사용 하느냐에 따라 어떤 것이 여러분의 애플리케이션에 더 잘 맞는지에 따라 다릅니다. Spring에서는 어느 쪽이든 할 수 있습니다.
역사적으로 두 가지 접근 방식은 서로 다른 버전의 Spring에서 나왔습니다. ModelAndView
접근 방식은 사전에 스프링 2.0 컨트롤러에서 모두 모델과 뷰 정보를 반환하는 기본 방법이었다. 이제 Model
매개 변수와 String
반환 값을 결합 할 수 있지만 이전 접근 방식은 여전히 유효합니다.
답변
2 센트도 추가하고 싶습니다. 두 번째 접근 방식은 관습 지향적입니다. 즉 개발자는 자신의 뷰가 무엇인지 명시 적으로 언급하지만 반환 문자열은 뷰 이름이라는 암시 적입니다. 코딩, 가독성 및 표준이 적습니다. ModelAndView를 사용하는 이전 방식보다 훨씬 낫습니다.