Різниця між Spring MVC та Spring Boot


234

Я тільки почав вивчати Весну. На своєму наступному кроці я хотів би розробити більші веб-додатки.

Тепер мені цікаво, чи варто починати з Spring Boot або Spring MVC. Я вже читав деякі речі, але це заплутано, тому що обидва схожі.

То які відмінності між ними?

Відповіді:


320
  • Spring MVC - це повна HTV-орієнтована структура MVC, керована Spring Framework та заснована в сервлетах. Це було б еквівалентно JSF в стеці JavaEE. Найпопулярніші елементи в ньому - це описувані класи @Controller, де ви реалізуєте методи, до яких можна отримати доступ, використовуючи різні HTTP-запити. Він має еквівалент @RestControllerдля реалізації API на основі REST.
  • Весняний завантажувач - це утиліта для швидкого налаштування програм, що пропонує нестандартну конфігурацію для побудови додатків, що працюють на веснах. Як ви можете знати, Spring інтегрує широкий спектр різних модулів під своєю парасолькою , як spring-core , spring-data , spring-web (до речі, Spring MVC) тощо. За допомогою цього інструменту ви можете сказати Spring, скільки їх використовувати, і ви отримаєте швидку настройку для них (вам можна буде самостійно змінити їх згодом).

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


29
Так, _ + 1, весняний завантажувач - це лише інструмент автоконфігурації (упакований у рамках). 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 (MVC + Data + Core ...) і надає готову конфігурацію для швидкого виробництва для їх використання.
Xtreme Biker

3
Чи означає це, що я можу налаштувати свій веб-додаток, а Spring Bootпотім виконати функціонал веб-сторінки Spring MVC?
Майк

1
@Mike впевнений, що це
Xtreme Biker

105

Spring MVC та 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 - єдина весняна версія, яка використовує MVC-Model.
годинник

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 - це орієнтована структура, тому його побудова враховує швидкий розвиток, менше часу на конфігурацію та дуже гарну підтримку громади.


19

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

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


17

Ось декілька основних моментів, які розрізняють Весна, Весна MVC та Весна завантаження:

Весна:

  1. Головна відмінність - "Тест-здатність".
  2. Весна приходить з DI та IOC. Завдяки якій всі важкі роботи, виконані системою, нам не потрібно робити будь-яких робіт (наприклад, ми зазвичай визначаємо об’єкт класу вручну, але через Di ми просто коментуємо за допомогою @Service або @Component - відповідний клас).
  3. Завдяки анотації @Autowired ми легко знущаємося з () під час одиничного тестування.
  4. Код копіювання та сантехніка. У JDBC ми пишемо один і той же код кілька разів для виконання будь-якої операції з базою даних. Весна вирішує цю проблему через Hibernate та ORM.
  5. Гарна інтеграція з іншими рамками. Як Hibernate, ORM, Junit & Mockito.

Весняний MVC

  1. Spring MVC Framework - це модуль весни, який забезпечує розробки веб-додатків, орієнтованих на технологію HTTP.
  2. Напруга MVC має чіткий поділ коду на вхідну логіку (контролер), бізнес-логіку (модель) та логіку інтерфейсу користувача (вид).
  3. Весняний MVC-шаблон допомагає розробити гнучкі та нещільно поєднані веб-програми.
  4. Надайте різні важко кодовані способи налаштувати свою програму відповідно до ваших потреб.

Весняний черевик:

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

(Еволюція на кшталт: Spring -> Spring MVC -> Spring Boot. Отже, новіша версія має сумісність з функціями старої версії.) Примітка. Вона містить не всі точки.


10

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

SpringBoot переймає головний біль конфігурації від розробника до власного "Я", а не Spring.

Неявно SpringBoot заснований на концепції весняних рамок, таких як боб, контролер, послуги, jpa тощо.

Можна сказати, що SpringBoot - це обгортка весни.

У SpringBoot за замовчуванням порт сервера становить 8080, але якщо ви хочете змінити, перейдіть до своєї програми.властивості та напишіть

server.port = 8084


10
  • За допомогою весняного завантаження вам не потрібно буде будувати конфігурацію. Це буде зроблено автоматично під час створення проекту.

  • Якщо ви використовуєте весняний MVC, вам потрібно створити конфігурацію самостійно. Це складніше, але це вирішально.


Просте і вишукане уточнення
Срітам Ягадев

8

Не повторюючи те саме в попередніх відповідях,
я пишу цю відповідь людям, які прагнуть розпочати новий проект і не знають, яка найкраща основа для запуску вашого проекту. Якщо ви новачок у цій рамці, найкраще, що я вважаю за краще - це використовувати весняний завантажувач (із STS / Spring Tool Suite ). Тому що це дуже допомагає. Її роблять усі конфігурації самостійно. Крім того, використовуйте Hibernate з весняним завантаженням в якості бази даних. За допомогою цієї комбінації ваша програма буде найкращою. Я можу гарантувати це своїм досвідом.

Навіть це одна з найкращих рамок для JEE (в даний час), яка вмирає найближчим часом. Існують легкі альтернативи. Тож будьте в курсі вашого досвіду, не дотримуйтесь жодної конкретної рамки. Найкраще - вільне володіння поняттями, а не рамками.


5

Думайте так:

Spring MVC - це веб-основа для реалізації архітектури MVC.

Spring Boot - це інструмент, орієнтований на програміста. Програміст повинен зосередитися на програмуванні, а інструмент повинен зосередитися на конфігураціях. Тому нам не потрібно витрачати час на налаштування купки xml, щоб зробити простий "Hello world".



1

Spring MVC та Spring Boot існують з різною метою. Отже, не розумно порівнювати один одного як суперників.

Що таке весняний черевик?

Spring Boot - це основа для упаковки весняного додатка з розумними настройками за замовчуванням. Що це означає?. Ви розробляєте веб-додаток за допомогою Spring MVC, Spring Data, Hibernate та Tomcat. Як упакувати та розгорнути цю програму на веб-сервері. На сьогоднішній день нам потрібно вручну записати конфігурації, XML-файли тощо для розгортання на веб-сервері.

Spring Boot робить це для вас із налаштуванням Zero XML у вашому проекті. Повірте, вам не потрібен дескриптор розгортання, веб-сервер тощо. Spring Boot - це магічна основа, яка поєднує всі залежності для вас. Нарешті, ваш веб-додаток буде окремим файлом JAR із вбудованими серверами.

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

Що таке весняний MVC?

Це традиційна рамка веб-додатків, яка допомагає створювати веб-додатки. Це схоже на структуру Struts.

Spring MVC - це програма Java, яка використовується для створення веб-додатків. Він відповідає схемі дизайну Model-View-Controller. Він реалізує всі основні особливості основної пружинної рамки, такі як Інверсія управління, Введення залежностей.

Spring MVC - це елегантне рішення для використання MVC у весняних рамках за допомогою DispatcherServlet. Тут DispatcherServlet - це клас, який отримує вхідний запит і відображає його на потрібний ресурс, наприклад контролери, моделі та представлення.

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

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.