[spring-mvc] 어느 것이 더 나은지, spring3 컨트롤러에서“ModelAndView”또는“String”을 반환합니다.

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를 사용하는 이전 방식보다 훨씬 낫습니다.


답변