What are the differences between Model, ModelMap, and ModelAndView?

Solution 1:

Model is an interface while ModelMap is a class.

ModelAndView is just a container for both a ModelMap and a view object. It allows a controller to return both as a single value.

Solution 2:

Differences between Model, ModelMap, and ModelAndView

Model: It is an Interface. It defines a holder for model attributes and primarily designed for adding attributes to the model.

Example:

@RequestMapping(method = RequestMethod.GET)
    public String printHello(Model model) {
          model.addAttribute("message", "Hello World!!");
          return "hello";
       }

ModelMap: Implementation of Map for use when building model data for use with UI tools.Supports chained calls and generation of model attribute names.

Example:

@RequestMapping("/helloworld")
public String hello(ModelMap map) {
    String helloWorldMessage = "Hello world!";
    String welcomeMessage = "Welcome!";
    map.addAttribute("helloMessage", helloWorldMessage);
    map.addAttribute("welcomeMessage", welcomeMessage);
    return "hello";
}

ModelAndView: This class merely holds both to make it possible for a controller to return both model and view in a single return value.

Example:

@RequestMapping("/welcome")
public ModelAndView helloWorld() {
        String message = "Hello World!";
        return new ModelAndView("welcome", "message", message);
    }

Solution 3:

Model: is an interface it contains four addAttribute and one merAttribute method.

ModelMap: implements Map interface. It also contains Map method.

ModelAndView: As Bart explain it allows a controller return both as a single value.