Il modello in Spring MVC è lo stesso del pattern MVC?

2

Studiando un concetto approfondito del framework Spring, sto affrontando questo dubbio.

Il Model , inteso in Spring MVC, ha lo stesso significato di M in MVC?

Voglio dire: ho sempre considerato il modello del pattern MVC un livello in cui risiedono tutti i dati e la logica che lo sta recuperando da un DB.

Ma in primavera il modello MVC è un luogo dove tutti gli oggetti condivisi tra Controller e View vivono ...

Questa è una cattiva interpretazione? Mi manca qualcosa?

    
posta davioooh 21.03.2017 - 12:48
fonte

1 risposta

3

Is the Model in Spring MVC the same of MVC pattern?

Se intendi org.springframework.ui.Model , quindi no, non lo è.

In MVC, il modello è il luogo in cui vive la tua attività. Il modello in MVC gestisce i dati e le regole di dominio dell'applicazione.

In primavera, il modello a cui si fa riferimento è un supporto per i dati visualizzati dalla vista. È fondamentalmente una mappa glorificata sotto.

Una vista è responsabile del rendering del modello. Il modo in cui le viste accedono ai dati del modello non è la stessa in tutte le viste supportate da Spring (JSP, FreeMarker, Portlet, ecc.), Quindi è necessario un modo generico per esporre tali dati a qualsiasi vista, per astrarre la tecnologia di visualizzazione.

Prima della primavera 2.5.1 hai inviato questi dati come una mappa (Spring ha un org.springframework.ui.ModelMap con vari metodi di supporto su di esso ... ma ancora una mappa) poi è stata aggiunta l'interfaccia org.springframework.ui.Model che è un'alternativa più semantica alla stessa cosa (ha un'implementazione org.springframework.ui.ExtendedModelMap che allo stesso tempo è figlia di ModelMap).

Dalla documentazione ModelMap (sottolineatura mia):

Implementation of {@link java.util.Map} for use when building model data for use with UI tools. Supports chained calls and generation of model attribute names.

This class serves as generic model holder for both Servlet and Portlet MVC, but is not tied to either of those. Check out the {@link Model} interface for a Java-5-based interface variant that serves the same purpose.

Quindi, questa interfaccia del modello Spring è solo un contenitore di attributi valore-chiave per il rendering da rendere. Si chiama Modello molto probabilmente perché si tratta di un framework MVC con controller e viste e modelli (ad esempio MVC è l'acronimo di Model View Controller, non Map View Controller, quindi le persone si riferiscono meglio a tale denominazione).

    
risposta data 22.03.2017 - 12:14
fonte

Leggi altre domande sui tag