Разница между Spring MVC и Spring Boot


234

Я только начал изучать Spring. На следующем этапе я хотел бы разработать более крупные веб-приложения.

Теперь мне интересно, стоит ли мне начинать с Spring Boot или Spring MVC. Я уже читал некоторые вещи, но это сбивает с толку, потому что оба выглядят одинаково.

Так в чем же разница между ними?

Ответы:


320
  • Spring MVC - это полный HTTP-ориентированный MVC-фреймворк, управляемый Spring Framework и основанный на сервлетах. Это было бы эквивалентно JSF в стеке JavaEE. Наиболее популярными элементами в нем являются классы, помеченные аннотацией @Controller, где вы реализуете методы, к которым вы можете обращаться, используя различные HTTP-запросы. Он имеет эквивалент @RestControllerдля реализации API на основе REST.
  • Spring boot - это утилита для быстрой настройки приложений, предлагающая готовую конфигурацию для создания приложений на базе Spring. Как вы, возможно, знаете, Spring объединяет широкий спектр различных модулей под своей эгидой , таких как spring-core , spring-data , spring-web (кстати, включая Spring MVC) и так далее. С помощью этого инструмента вы можете сказать Spring, сколько из них использовать, и вы получите быструю настройку для них (вы можете изменить его самостоятельно позже).

Итак, Spring MVC - это фреймворк, который будет использоваться в веб-приложениях, а Spring Boot - это готовый к работе инициализатор проекта на основе Spring . Возможно, вам будет полезно посетить вики-страницу Spring MVC, а также вики-страницу Spring Boot в SO.


29
Да _ + 1, Spring boot - это просто инструмент автоконфигурации (упакованный как фреймворк). Spring mvc - это веб-фреймворк
Plain_Dude_Sleeping_Alone

2
Означает ли это, что Spring Boot используется для отображения страницы представления (HTML) только для возврата контроллера и отправки JSON, и если я хочу использовать представление для отображения HTML, мне нужно использовать Spring MVC?
Усама Аль-Банна

2
@ OsamaAl-Banna Spring MVC - это технология уровня представления, в основном она обрабатывает HTTP-запросы-ответы, выступая в качестве контроллера (для HTML вы можете объединить его с тимилифом, например, для REST + JSON, используйте его как есть, потому что преобразование JSON выполняется с помощью встроенного Джексона). Spring Boot объединяет целые проекты Spring Spring (MVC + Data + Core ...) и предоставляет готовую к работе конфигурацию для их использования.
байкер

3
Означает ли это, что я могу настроить свое веб-приложение, а Spring Bootзатем выполнить веб-функциональность Spring MVC?
Майк

1
@ Скорее всего, это так
Xtreme Biker

105

Spring MVC и Spring Boot хорошо описаны в других ответах, поэтому, не повторяя этого, позвольте мне перейти непосредственно к конкретике. Spring Boot и Spring MVC не являются сопоставимыми или взаимоисключающими. Если вы хотите заниматься разработкой веб-приложений с помощью Spring, вы все равно должны использовать Spring MVC . Тогда возникает вопрос, использовать ли Spring Boot или нет.

Я думаю, что для разработки обычных приложений Spring или для начала изучения Spring рекомендуется использовать Spring Boot . Это значительно облегчает работу, готово к производству и быстро получает широкое распространение.

Я видел, как начинающие задают этот вопрос, потому что в STS (Spring Tool Suite) есть два мастера: один для создания проекта Spring Boot, а другой для создания проекта Spring MVC. Поэтому я рекомендую создать проект Spring Boot и выбрать в качестве модуля Web .


1
Когда вы используете spring-boot (с spring-data-rest и spring-web), у вас есть принцип MVC, верно? Я был просто сбит с толку, потому что думал, что Spring MVC - единственная версия Spring, которая использует MVC-модель.
watchme

5
Spring-Web - это не что иное, как модуль spring-mvc
Санджай


23

Проще говоря, это можно сформулировать так:

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).

А Spring Boot является платформой Opinionated, поэтому его сборка учитывает быструю разработку, меньше времени на настройку и очень хорошую поддержку сообщества.


19

Spring MVCявляется подпроектом Spring Framework, предназначенным для проектирования и разработки приложений, использующих шаблон MVC (Model-View-Controller). Spring MVC предназначен для полной и полной интеграции с Spring Framework и транзитивно, с большинством других подпроектов.

Spring Bootможет быть понято из этой статьи командой Spring Engineering. Он предположительно самоуверенный, то есть он активно поддерживает определенный стиль быстрого развития, но он разработан достаточно хорошо, чтобы приспособиться к исключениям из правила, если хотите. Короче говоря, это соглашение по методологии конфигурации, которое готово понять вашу необходимость нарушить соглашение, когда это оправдано.


17

Вот некоторые основные моменты, которые отличают Spring, Spring MVC и Spring Boot:

Весна :

  1. Основным отличием является «Тест-способность».
  2. Весна пришла с ДИ и МОК. Посредством всей тяжелой работы, выполняемой системой, нам не нужно выполнять какую-либо работу (например, обычно мы определяем объект класса вручную, но через Di мы просто аннотируем @Service или @Component - соответствующие классы управляют ими).
  3. С помощью аннотации @Autowired мы легко высмеиваем ее во время модульного тестирования.
  4. Дублирование и Сантехнический код. В JDBC мы пишем один и тот же код несколько раз для выполнения любых операций с базами данных. Spring решает эту проблему с помощью Hibernate и ORM.
  5. Хорошая интеграция с другими фреймворками. Как Hibernate, ORM, Junit & Mockito.

Spring MVC

  1. Spring MVC Framework - это модуль Spring, который предоставляет средства разработки веб-приложений, ориентированных на HTTP.
  2. Spring MVC имеет четкое разделение кода на логику ввода (контроллер), бизнес-логику (модель) и логику пользовательского интерфейса (представление).
  3. Шаблон Spring MVC помогает разрабатывать гибкие и слабо связанные веб-приложения.
  4. Предоставьте различные жестко запрограммированные способы настройки вашего приложения в зависимости от ваших потребностей.

Весенний ботинок:

  1. Создайте быстрое приложение, чтобы вместо управления одним большим веб-приложением мы разделили их по отдельности на разные микросервисы, которые имеют свои собственные возможности и возможности.
  2. Автоконфигурация с использованием Web Jar: в обычном Spring есть много настроек, таких как DispatcherServlet, сканирование компонентов, View Resolver, Web Jar, XML. (Например, если я хочу настроить источник данных, Entity Manager Transaction Manager Factory). Сконфигурируйте автоматически, когда он недоступен, используя путь к классам.
  3. Поставляется с Spring Spring Starters по умолчанию, который поставляется с некоторой зависимостью конфигурации Spring по умолчанию (например, Spring Core, Web-MVC, Jackson, Tomcat, Validation, Binding Data, Logging). Не беспокойтесь и о версии.

(Эволюция, например: Spring -> Spring MVC -> Spring Boot, поэтому более новая версия обладает совместимостью с функциями старой версии.) Примечание: в нем не все.


10

SpringBoot фактически предварительно настроен, что сокращает конфигурацию котла и обеспечивает самый простой или быстрый способ запуска вашего приложения.

SpringBoot переносит головную боль конфигурации от разработчика к себе, а не к Spring.

Очевидно, что SpringBoot основан на концепции среды Spring, такой как bean, controller, services, jpa и т. Д.

Можно сказать, что SpringBoot - это обертка Spring.

В SpringBoot по умолчанию порт сервера равен 8080, но если вы хотите изменить его, перейдите в ваш application.properties и напишите

server.port = 8084


10
  • Используя весеннюю загрузку, вам не нужно создавать конфигурацию. Это будет сделано автоматически при создании проекта.

  • Если вы используете Spring MVC, вам нужно создать конфигурацию самостоятельно. Это сложнее, но это важно.


Простое и элегантное уточнение
Sritam Jagadev

8

Не повторяя то же самое в предыдущих ответах,
я пишу этот ответ для людей, которые хотят начать новый проект и не знают, какая из них является лучшей основой для запуска вашего проекта. Если вы новичок в этом фреймворке, лучшее, что я предпочитаю, это использовать загрузочную пружину (с STS / Spring Tool Suite ). Потому что это очень помогает. Сделайте все конфигурации самостоятельно. Кроме того, используйте Hibernate с spring-boot в качестве основы базы данных. С этой комбинацией ваше приложение будет лучшим. Я могу гарантировать это своим опытом.

Даже это одна из лучших платформ для JEE (в настоящее время), которая скоро умрет. Есть легкие альтернативы. Так что будьте в курсе вашего опыта, не придерживайтесь одной конкретной структуры. Лучше всего быть свободно в концепциях, а не в рамках.


5

Подумайте так:

Spring MVC - это веб-фреймворк для реализации архитектуры MVC.

Spring Boot - это инструмент, ориентированный на программиста. Программист должен сосредоточиться на программировании, а инструмент - на настройках. Таким образом, нам не нужно тратить время на настройку связки XML для создания простого «Hello world».



1

Spring MVC и Spring Boot существуют для разных целей. Поэтому не стоит сравнивать друг друга с соперниками.

Что такое Spring Boot?

Spring Boot - это структура для упаковки весенних приложений с разумными настройками по умолчанию. Что это значит?. Вы разрабатываете веб-приложение, используя Spring MVC, Spring Data, Hibernate и Tomcat. Как вы упаковываете и развертываете это приложение на своем веб-сервере. На данный момент мы должны вручную написать конфигурации, файлы XML и т. Д. Для развертывания на веб-сервере.

Spring Boot сделает это за вас с настройкой Zero XML в вашем проекте. Поверьте, вам не нужен дескриптор развертывания, веб-сервер и т. Д. Spring Boot - это волшебная структура, которая объединяет все зависимости для вас. Наконец, ваше веб-приложение будет автономным JAR-файлом со встроенными серверами.

Если вы все еще не знаете, как это работает, пожалуйста, прочитайте о разработке инфраструктуры микросервиса с использованием Spring Boot.

Что такое Spring MVC?

Это традиционная структура веб-приложений, которая помогает вам создавать веб-приложения. Это похоже на фреймворк Struts.

Spring MVC - это среда Java, которая используется для создания веб-приложений. Это следует шаблону проектирования Model-View-Controller. Он реализует все основные функции каркаса с пружинными сердечниками, такие как Inversion of Control, Dependency Injection.

Spring MVC предоставляет элегантное решение для использования MVC в Spring Framework с помощью DispatcherServlet. Здесь DispatcherServlet - это класс, который получает входящий запрос и сопоставляет его с нужным ресурсом, таким как контроллеры, модели и представления.

Я надеюсь, что это поможет вам понять разницу.

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.