Разница только семантическая. Если вы не создадите объект ModelAndView
, Spring сделает это за вас.
Как правило, второй подход предпочтительнее, так как модульное тестирование намного проще, особенно если вы передаете Map
вместо вашей модели.
РЕДАКТИРОВАТЬ Чтобы уточнить на тестировании (на основе jUnit
). Я считаю следующую подпись предпочтительной:
@RequestMapping(value = "/Foo", method = RequestMethod.GET)
public String goHome(final Map model) {
model.addAttribute("bar", new Bar());
return "foobar.jsp";
}
Это позволяет нам создать тест, даже не зная, Spring
участвует
@Test
public void testGoHome() {
// Setup
Controller controller = ...
Map<String, Bar> model = new HashMap<String, Bar>();
// Test
assertEquals("foobar.jsp", controller.goHome(model));
assertNotNull(model.get("bar"));
}
Этот пример основан на Map
, но также может быть ModelMap
или даже Model
, если вы предпочитаете.