Modello - non è un database ase, non è repository, non è entità. Il modello è un'astrazione, che contiene tutti i dati, che devono essere visualizzati. E ogni View
ha il proprio modello. È possibile considerare Model
come contenitore per i dati tra Controller
e View
.
Nel modello Spring è il parametro ModelMap
del metodo del controller.
Controller - prepara Model
, per passarlo a View
. Se il modello è abbastanza semplice, lo Controller
può farlo da solo.
Ma la maggior parte dei modelli contiene molti dati. Può trattarsi di più entità da database, dati da configurazione ecc.In questo caso il controller utilizza il livello inferiore: Service
, Repository
. Tutti aiutano lo Сontroller
a creare il modello per View
.
UPD: Si tratta di uno scopo di Controller
per collegare View
e Model
. Controller
crea e riempie il Model
, quindi sceglie View
e passa questo creato allo View
. Ecco come Modello e Visualizza ottengono la connessione.
In Spring controller sono Controller
e RestController
.
View - è il punto finale in cui i dati da Model
(passati da Controller
) verranno visualizzati all'utente. Ma un altro ruolo di View
è ottenere comandi da utente e passarlo a Controller
.
In primavera questa visualizzazione può essere vista di qualsiasi motore di visualizzazione: JSP
, Freemaker
, Thymeleaf
.
Nota: di solito, non usa Controller
Repository
direttamente. Tradizionalmente, Controller
funziona con Service
e Service
utilizza Repository
per ottenere dati dal database. Così i rapporti sono i seguenti: View
<-Controller
->Service
->Repository
fonte
2016-02-26 05:24:41
Grazie per una risposta molto dettagliata. Capisco quasi tutto a parte il modo in cui il Modello e la Vista sono connessi? La classe di servizio altera il modello che altera la vista? Potresti espandere su: Controller-> Servizio-> Repository per includere la vista? – java123999
Il servizio non conosce nulla su Modello e Vista. Solo il controller conosce tutto. Lo scopo del controller principale è collegare tutti i componenti l'uno con l'altro. Solo il controller può modificare il modello. Solo il Controller può chiedere al Servizio di fare qualcosa. Ad esempio, il controllore può chiedere al servizio di caricare Entity dal database. Successivamente, il Controller aggiungerà questa Enitity (o più Entità) al Modello e passerà questo Modello alla Vista. E View mostrerà questo modello, ma View neanche ha idea, da dove il controller riceve i dati memorizzati nel modello. –
Così come il Servizio non sa per cosa ottenere i dati da Controller. Quindi fornisce meno dipendenze tra i componenti. –