Diferença entre Spring MVC e Spring Boot


234

Eu apenas comecei a aprender a primavera. Na minha próxima etapa, eu gostaria de desenvolver aplicativos Web maiores.

Agora, estou pensando se devo começar com o Spring Boot ou o Spring MVC. Eu já li algumas coisas, mas é confuso porque ambos parecem semelhantes.

Então, quais são as diferenças entre os dois?

Respostas:


320
  • Spring MVC é uma estrutura MVC completa orientada a HTTP, gerenciada pela Spring Framework e baseada em Servlets. Seria equivalente ao JSF na pilha JavaEE. Os elementos mais populares nele são as classes anotadas @Controller, nas quais você implementa métodos que podem ser acessados ​​usando diferentes solicitações HTTP. Tem um equivalente @RestControllerpara implementar APIs baseadas em REST.
  • O Spring boot é um utilitário para configurar aplicativos rapidamente, oferecendo uma configuração pronta para criar aplicativos com o Spring. Como você deve saber, Primavera integra uma vasta gama de diferentes módulos sob seu guarda-chuva , como primavera-core , primavera-dados , primavera-web (que inclui Spring MVC, por sinal) e assim por diante. Com esta ferramenta, você pode dizer ao Spring quantos deles usará e obterá uma configuração rápida para eles (você poderá alterá-lo sozinho posteriormente).

Portanto, o Spring MVC é uma estrutura a ser usada em aplicativos da Web e o Spring Boot é um inicializador de projeto pronto para produção baseado em Spring . Pode ser útil visitar o wiki da tag Spring MVC , bem como a wiki da tag Spring Boot no SO.


29
Sim _ + 1, a inicialização por Spring é apenas uma ferramenta de configuração automática (empacotada como estrutura). O Spring mvc é um framework web
Plain_Dude_Sleeping_Alone 14/16

2
Isso significa que o Spring Boot é usado para exibir a página HTML (view) apenas para um retorno do controlador e postar JSON, e se eu quiser usar o view para exibir HTML, preciso usar o Spring MVC?
Osama Al-Banna

2
@ OsamaAl-Banna Spring MVC é uma tecnologia de camada de visualização, que lida basicamente com respostas a solicitações HTTP, atuando como um controlador (para HTML, você pode combiná-lo com thymeleaf, por exemplo, para REST + JSON, use-o como está, porque a conversão JSON é feita com o Jackson integrado). O Spring Boot integra todos os projetos guarda-chuva do Spring (MVC + Data + Core ...) e fornece uma configuração pronta para produção rápida para usá-los.
Xtreme Biker

3
Isso significa que eu posso configurar meu aplicativo da web Spring Boote preencher a funcionalidade da web Spring MVC?
20919 Mike

1
@ Mike certeza que ele faz
Xtreme Biker

105

O Spring MVC e o Spring Boot são bem descritos em outras respostas e, portanto, sem repetir isso, deixe-me ir direto ao assunto. Spring Boot e Spring MVC não são comparáveis ​​ou são mutuamente exclusivos. Se você deseja desenvolver aplicativos da Web usando o Spring, você usaria o Spring MVC de qualquer maneira. Sua pergunta passa a ser a utilização ou não do Spring Boot .

Para desenvolver aplicativos comuns do Spring ou começar a aprender o Spring, acho que seria recomendável usar o Spring Boot . Facilita consideravelmente o trabalho, está pronto para produção e está sendo adotado rapidamente.

Às vezes, tenho visto iniciantes fazendo essa pergunta, porque no STS (Spring Tool Suite) existem dois assistentes: um para criar um projeto Spring Boot e outro para criar um projeto Spring MVC. Portanto, minha recomendação seria criar um projeto Spring Boot e escolher a Web como um módulo.


1
Quando você usa spring-boot (com spring-data-rest e spring-web), você tem o princípio MVC aqui, certo? Fiquei confuso porque pensei que o Spring MVC é a única versão do Spring que usa o MVC-Model.
Watchme

5
spring-web é nada, mas o módulo spring-mvc
Sanjay


23

Em termos simples, pode ser indicado como:

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 o Spring Boot é uma estrutura opinativa, portanto, sua construção leva em consideração o desenvolvimento rápido, menos tempo necessário para configuração e um excelente suporte da comunidade.


19

Spring MVCé um subprojeto do Spring Framework, direcionado ao design e desenvolvimento de aplicativos que usam o padrão MVC (Model-View-Controller). O Spring MVC foi projetado para integrar-se total e completamente ao Spring Framework e, transitivamente, à maioria dos outros subprojetos.

Spring Bootpode ser entendido muito bem neste artigo pela equipe de engenharia de primavera. É supostamente opinativo, isto é, defende fortemente um certo estilo de desenvolvimento rápido, mas foi projetado o suficiente para acomodar exceções à regra, se você desejar. Em resumo, é uma convenção sobre metodologia de configuração que está disposta a entender sua necessidade de quebrar a convenção quando justificado.


17

Aqui está um ponto principal que diferencia o Spring, Spring MVC e Spring Boot:

Primavera :

  1. A principal diferença é "capacidade de teste".
  2. A primavera vem com o DI e o COI. Através do qual todo o trabalho árduo feito pelo sistema não precisamos fazer nenhum tipo de trabalho (como, normalmente, definimos o objeto da classe manualmente, mas através do Di apenas anotamos com @Service ou @Component - a classe correspondente os gerencia).
  3. Através da anotação @Autowired, zombamos facilmente () no momento do teste da unidade.
  4. Código de duplicação e encanamento. No JDBC, escrevemos o mesmo código várias vezes para executar qualquer tipo de operação do banco de dados. O Spring resolve esse problema através do Hibernate e ORM.
  5. Boa integração com outras estruturas. Como o Hibernate, ORM, Junit e Mockito.

Spring MVC

  1. O Spring MVC framework é um módulo do spring que fornece facilidade de desenvolvimento de aplicativos da Web orientado a HTTP.
  2. O Spring MVC possui uma separação de código clara na lógica de entrada (controlador), lógica de negócios (modelo) e lógica da interface do usuário (visualização).
  3. O padrão Spring MVC ajuda a desenvolver aplicativos da web flexíveis e pouco acoplados.
  4. Forneça várias maneiras codificadas para personalizar seu aplicativo com base em sua necessidade.

Bota de mola:

  1. Crie um aplicativo rápido para que, em vez de gerenciar um único aplicativo da Web grande, os dividamos individualmente em diferentes microsserviços, com escopo e capacidade próprios.
  2. Configuração automática usando o Web Jar: No Spring normal, há muitas configurações, como DispatcherServlet, Verificação de componentes, Resolvedor de exibição, Web Jar, XMLs. (Por exemplo, se eu quiser configurar a fonte de dados, Entity Manager Transaction Manager Factory). Configure automaticamente quando não estiver disponível usando o caminho da classe.
  3. Vem com Spring Spring Default, que vem com alguma dependência de configuração Spring padrão (como Spring Core, Web-MVC, Jackson, Tomcat, Validação, Data Binding, Logging). Não se preocupe com o problema de versão também.

(Evolução como: Spring -> Spring MVC -> Spring Boot, a versão mais recente tem compatibilidade com os recursos da versão antiga.) Nota: Ele não contém todos os pontos.


10

Na verdade, o SpringBoot é pré-configurado para reduzir a configuração da caldeira e fornecer uma maneira mais fácil ou rápida de iniciar seu aplicativo.

O SpringBoot leva a dor de cabeça da configuração do desenvolvedor para o seu próprio eu, em vez do Spring.

Implicitamente SpringBoot é baseado no conceito de framework Spring, como bean, controlador, serviços, jpa etc.

Você pode dizer que o SpringBoot é um invólucro do Spring.

No SpringBoot, por padrão, a porta do servidor é 8080, mas se você deseja alterar, acesse seu application.properties e escreva

server.port = 8084


10
  • Usando o boot de primavera, você não precisará criar configurações. Isso será feito automaticamente quando você criar um projeto.

  • Se você usa o Spring MVC, você mesmo precisa criar a configuração. É mais complicado, mas é crucial.


Esclarecimento simples e elegante
Sritam Jagadev

8

Sem repetir a mesma coisa nas respostas anteriores,
estou escrevendo esta resposta para as pessoas que desejam iniciar um novo projeto e não sabem qual é a melhor estrutura para iniciar seu projeto. Se você é iniciante nessa estrutura, a melhor coisa que prefiro é Usar a inicialização por mola (com o STS / Spring Tool Suite ). Porque ajuda muito. É fazer todas as configurações por conta própria. Além disso, use o Hibernate com spring-boot como uma estrutura de banco de dados. Com essa combinação, seu aplicativo será o melhor. Eu posso garantir isso com minhas experiências.

Mesmo essa é uma das melhores estruturas para o JEE (no presente), isso vai morrer em um futuro próximo. Existem alternativas leves chegando. Portanto, mantenha-se atualizado com sua experiência, não se atenha a uma estrutura específica. A melhor coisa é ser fluente em conceitos, não nas estruturas.


5

Pense desta maneira:

Spring MVC é uma estrutura baseada na Web para implementar a arquitetura MVC.

Spring Boot é uma ferramenta orientada ao programador. O programador deve se concentrar na programação e a ferramenta deve se concentrar nas configurações. Portanto, não precisamos perder tempo configurando um monte de xml para criar um simples 'Hello world'.


2

A seguir, estão as diferenças entre a inicialização do Spring e o Spring MVC.

insira a descrição da imagem aqui


1

O Spring MVC e o Spring Boot existem para diferentes finalidades. Portanto, não é aconselhável comparar-se como os contendores.

O que é o Spring Boot?

O Spring Boot é uma estrutura para empacotar o aplicativo spring com padrões sensatos. O que isto significa?. Você está desenvolvendo um aplicativo Web usando Spring MVC, Spring Data, Hibernate e Tomcat. Como você empacota e implanta esse aplicativo no seu servidor web. A partir de agora, temos que escrever manualmente as configurações, arquivos XML, etc. para implantar no servidor da web.

O Spring Boot faz isso para você com a configuração Zero XML em seu projeto. Acredite, você não precisa de descritor de implantação, servidor web, etc. O Spring Boot é uma estrutura mágica que agrupa todas as dependências para você. Finalmente, seu aplicativo da web será um arquivo JAR independente com servidores incorporados.

Se você ainda está confuso sobre como isso funciona, leia sobre o desenvolvimento da estrutura de microsserviços usando a inicialização por mola.

O que é o Spring MVC?

É uma estrutura tradicional de aplicativos da web que ajuda você a criar aplicativos da web. É semelhante ao framework Struts.

Um Spring MVC é uma estrutura Java usada para construir aplicativos da web. Segue o padrão de design do Model-View-Controller. Ele implementa todos os recursos básicos de uma estrutura de mola central, como Inversão de controle, Injeção de dependência.

Um Spring MVC fornece uma solução elegante para usar o MVC na estrutura de primavera com a ajuda do DispatcherServlet. Aqui, DispatcherServlet é uma classe que recebe a solicitação de entrada e a mapeia para o recurso certo, como controladores, modelos e visualizações.

Espero que isso ajude você a entender a diferença.

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.