program tip

spring3 컨트롤러에서 "ModelAndView"또는 "String"을 반환하는 것이 좋습니다

radiobox 2020. 7. 29. 08:04
반응형

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;
}

반환 문자열

@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접근 방식은 Spring 2.0 이전의 컨트롤러에서 모델과 뷰 정보를 모두 반환하는 기본 방법이었습니다. 이제 Model매개 변수와 String리턴 값을 결합 할 수 있지만 이전 방법은 여전히 ​​유효합니다.


나는 또한 2 센트를 추가하고 싶습니다. 두 번째 접근 방식은 컨벤션 지향에 대한 것입니다. 즉, 개발자는 자신의 견해를 명시 적으로 언급하지만 반환 문자열이 내재적이라는 것은 암시 적입니다. 코딩이 적고 읽기 쉽고 표준입니다. ModelAndView를 사용하면 이전 방식보다 훨씬 낫습니다.

참고 URL : https://stackoverflow.com/questions/7175509/which-is-better-return-modelandview-or-string-on-spring3-controller

반응형