Differenza tra Spring MVC e Spring Boot


234

Ho appena iniziato a studiare la primavera. Nel mio prossimo passo, vorrei sviluppare applicazioni Web più grandi.

Ora mi chiedo se dovrei iniziare con Spring Boot o Spring MVC. Ho già letto alcune cose, ma è confuso perché entrambi sembrano simili.

Quindi quali sono le differenze tra i due?

Risposte:


320
  • Spring MVC è un framework MVC completo orientato all'HTTP gestito da Spring Framework e basato su Servlet. Sarebbe equivalente a JSF nello stack JavaEE. Gli elementi più popolari in esso sono le classi annotate @Controller, in cui si implementano metodi a cui è possibile accedere utilizzando diverse richieste HTTP. Ha un equivalente @RestControllerper implementare API basate su REST.
  • Spring boot è un'utilità per impostare rapidamente le applicazioni, offrendo una configurazione pronta all'uso per costruire applicazioni basate su Spring. Come si può sapere, Spring integra una vasta gamma di diversi moduli sotto il suo ombrello , come molla-nucleo , molla-dati , molla web (che include Spring MVC, tra l'altro) e così via. Con questo strumento puoi dire a Spring quanti di questi utilizzare e otterrai una configurazione rapida per loro (ti sarà permesso di cambiarlo da solo in seguito).

Quindi, Spring MVC è un framework da utilizzare nelle applicazioni Web e Spring Boot è un inizializzatore di progetti pronto per la produzione basato su Spring . Potresti trovare utile visitare il wiki del tag Spring MVC e il wiki del tag Spring Boot in SO.


29
Sì _ + 1, Spring boot è solo uno strumento di autoconfigurazione (impacchettato come framework). Spring mvc è web framework
Plain_Dude_Sleeping_Alone

2
Ciò significa che Spring Boot viene utilizzato per visualizzare la pagina di visualizzazione (HTML) solo per un ritorno del controller e per pubblicare JSON, e se voglio usare la vista per visualizzare HTML devo usare Spring MVC?
Osama Al-Banna,

2
@ OsamaAl-Banna Spring MVC è una tecnologia a livello di vista, in pratica gestisce le risposte alle richieste HTTP, fungendo da controller (per HTML, è possibile combinarlo con thymeleaf, ad esempio, per REST + JSON, usarlo così com'è, perché la conversione JSON viene eseguita con Jackson integrato). Spring Boot integra tutti i progetti ombrello Spring (MVC + Data + Core ...) e fornisce una configurazione pronta per la produzione rapida per usarli.
Xtreme Biker,

3
Questo significa che posso configurare la mia app Web con Spring Bootquindi soddisfare le funzionalità web con Spring MVC?
Mike,

1
@Mike certo che lo fa
Xtreme Biker

105

Spring MVC e Spring Boot sono ben descritti in altre risposte, e quindi senza ripeterlo, lasciatemi saltare direttamente ai dettagli. Spring Boot e Spring MVC non sono comparabili o si escludono a vicenda. Se si desidera eseguire lo sviluppo di applicazioni Web utilizzando Spring, utilizzare comunque Spring MVC . La domanda diventa quindi se utilizzare Spring Boot o meno.

Per lo sviluppo di applicazioni Spring comuni o per iniziare a imparare Spring, penso che sarebbe consigliabile utilizzare Spring Boot . Facilita notevolmente il lavoro, è pronto per la produzione e viene rapidamente adottato su vasta scala.

A volte ho visto i principianti porre questa domanda perché in STS (Spring Tool Suite) ci sono due procedure guidate: una per la creazione di un progetto Spring Boot e un'altra per la creazione di un progetto Spring MVC. Quindi, la mia raccomandazione sarebbe quella di creare un progetto Spring Boot e scegliere Web come modulo in questo.


1
Quando usi Spring-Boot (con Spring-Data-Rest e Spring-Web) hai qui il principio MVC, giusto? Ero solo confuso perché pensavo che Spring MVC fosse l'unica versione Spring che utilizza il modello MVC.
Watchme

5
spring-web non è altro che il modulo spring-mvc
Sanjay


23

In parole povere si può affermare come:

Spring boot = Spring MVC + Auto Configuration(Don't need to write spring.xml file for configurations) + Server(You can have embedded Tomcat, Netty, Jetty server).

E Spring Boot è un framework Opinionated, quindi la sua build prende in considerazione uno sviluppo veloce, meno tempo necessario per la configurazione e un ottimo supporto per la community.


19

Spring MVCè un sottoprogetto di Spring Framework, destinato alla progettazione e allo sviluppo di applicazioni che utilizzano il modello MVC (Model-View-Controller). Spring MVC è progettato per integrarsi completamente e completamente con lo Spring Framework e transitoriamente, la maggior parte degli altri sottoprogetti.

Spring Bootpuò essere compreso abbastanza bene da questo articolo dal team di Spring Engineering. È presumibilmente supponente, cioè sostiene fortemente un certo stile di rapido sviluppo, ma è progettato abbastanza bene da accogliere eccezioni alla regola, se vuoi. In breve, è una convenzione sulla metodologia di configurazione che è disposta a comprendere la necessità di infrangere la convenzione quando è giustificata.


17

Ecco alcuni punti principali che differenziano Spring, Spring MVC e Spring Boot:

Primavera :

  1. La differenza principale è "Test-abilità".
  2. La primavera arriva con DI e IOC. Attraverso il quale tutto il duro lavoro svolto dal sistema non abbiamo bisogno di fare alcun tipo di lavoro (come, normalmente definiamo manualmente l'oggetto della classe ma attraverso Di annotiamo semplicemente con @Service o @Component - la classe corrispondente gestisce quelli).
  3. Tramite l'annotazione @Autowired la deridiamo facilmente () al momento del test unitario.
  4. Codice di duplicazione e idraulico. In JDBC scriviamo lo stesso codice più volte per eseguire qualsiasi tipo di operazione di database Spring risolve questo problema tramite Hibernate e ORM.
  5. Buona integrazione con altri framework. Come Hibernate, ORM, Junit e Mockito.

Spring MVC

  1. Il framework Spring MVC è un modulo di Spring che fornisce funzionalità per lo sviluppo di applicazioni Web orientate all'HTTP.
  2. Spring MVC ha una chiara separazione del codice sulla logica di input (controller), business logic (modello) e UI logic (vista).
  3. Il modello Spring MVC aiuta a sviluppare applicazioni Web flessibili e liberamente accoppiate.
  4. Fornire vari modi con codice per personalizzare l'applicazione in base alle proprie esigenze.

Stivale a molla:

  1. Crea un'applicazione rapida in modo che, anziché gestire un'unica grande applicazione web, li dividiamo individualmente in diversi microservizi che hanno il loro ambito e capacità.
  2. Configurazione automatica tramite Web Jar: in primavera normale c'è molta configurazione come DispatcherServlet, Scansione dei componenti, View Resolver, Web Jar, XML. (Ad esempio, se desidero configurare l'origine dati, Factory Transaction Manager Entity Manager). Configurare automaticamente quando non è disponibile usando class-path.
  3. Viene fornito con Spring Starter predefiniti, forniti con alcune dipendenze di configurazione Spring predefinite (come Spring Core, Web-MVC, Jackson, Tomcat, Validation, Data Binding, Logging). Non preoccuparti anche del problema delle versioni.

(Evoluzione come: Spring -> Spring MVC -> Spring Boot, quindi la versione più recente ha la compatibilità delle funzionalità della versione precedente.) Nota: non contiene tutti i punti.


10

SpringBoot è in realtà preconfigurato che riduce la configurazione della caldaia e fornisce il modo più semplice o rapido per avviare l'applicazione.

SpringBoot porta il mal di testa della configurazione dallo sviluppatore a se stesso piuttosto che a Spring.

Implicitamente SpringBoot si basa sul concetto di framework Spring come bean, controller, servizi, jpa ecc.

Puoi dire che SpringBoot è un wrapper di Spring.

In SpringBoot per impostazione predefinita la porta del server è 8080 ma se si desidera modificare, andare su application.properties e scrivere

server.port = 8084


10
  • Usando l'avvio a molla non sarà necessario creare la configurazione. Questo sarà fatto automaticamente quando crei il progetto.

  • Se usi Spring MVC devi creare tu stesso la configurazione. È più complicato, ma è cruciale.


Chiarimento semplice ed elegante
Sritam Jagadev

8

Senza ripetere la stessa cosa nelle risposte precedenti,
sto scrivendo questa risposta per le persone che stanno cercando di iniziare un nuovo progetto e non sanno quale sia il miglior framework per avviare il tuo progetto. Se sei un principiante in questo framework, la cosa migliore che preferisco è Usa lo stivale a molla (con STS / Spring Tool Suite ). Perché aiuta molto. Fa tutte le configurazioni da solo. Inoltre, utilizzare Hibernate con spring-boot come framework di database. Con questa combinazione, l'applicazione sarà la migliore. Posso garantirlo con le mie esperienze.

Anche questo è uno dei migliori framework per JEE (nel presente) che morirà nel prossimo futuro. Ci sono alternative leggere in arrivo. Quindi tieniti aggiornato con la tua esperienza non attenersi a un particolare framework. La cosa migliore è essere fluenti nei concetti, non nei quadri.


5

Pensa in questo modo:

Spring MVC è un framework basato sul Web per implementare l'architettura MVC.

Spring Boot è uno strumento orientato al programmatore. Il programmatore deve concentrarsi sulla programmazione e lo strumento deve concentrarsi sulle configurazioni. Quindi non abbiamo bisogno di perdere tempo a configurare un gruppo di xml per creare un semplice "Hello world".


2

Di seguito sono riportate le differenze tra Spring boot e Spring MVC.

inserisci qui la descrizione dell'immagine


1

Spring MVC e Spring Boot esistono per scopi diversi. Quindi, non è saggio confrontarsi come contendenti.

Che cos'è Spring Boot?

Spring Boot è un framework per impacchettare l'applicazione a molla con impostazioni predefinite ragionevoli. Cosa significa questo?. Stai sviluppando un'applicazione web utilizzando Spring MVC, Spring Data, Hibernate e Tomcat. Come impacchettare e distribuire questa applicazione sul tuo server web. A partire da ora, dobbiamo scrivere manualmente le configurazioni, i file XML, ecc. Per la distribuzione sul server Web.

Spring Boot lo fa per te con la configurazione Zero XML nel tuo progetto. Credimi, non hai bisogno di descrittori di distribuzione, web server, ecc. Spring Boot è un framework magico che raggruppa tutte le dipendenze per te. Infine, l'applicazione Web sarà un file JAR autonomo con server incorporati.

Se sei ancora confuso su come funziona, leggi lo sviluppo del framework di microservizi usando il boot a molla.

Che cos'è Spring MVC?

Si tratta di un framework di applicazioni Web tradizionale che consente di creare applicazioni Web. È simile al framework Struts.

Un MVC di primavera è un framework Java che viene utilizzato per creare applicazioni Web. Segue il modello di progettazione Model-View-Controller. Implementa tutte le caratteristiche di base di una struttura a molla come Inversion of Control, Dependency Injection.

Un MVC Spring fornisce un'elegante soluzione per utilizzare MVC nel framework di primavera con l'aiuto di DispatcherServlet. Qui, DispatcherServlet è una classe che riceve la richiesta in arrivo e la associa alla giusta risorsa come controller, modelli e viste.

Spero che questo ti aiuti a capire la differenza.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.