Sự khác biệt giữa Spring MVC và Spring Boot


234

Tôi mới bắt đầu học mùa xuân. Trong bước tiếp theo, tôi muốn phát triển các ứng dụng web lớn hơn.

Bây giờ tôi tự hỏi liệu tôi nên bắt đầu với Spring Boot hay Spring MVC. Tôi đã đọc một số thứ, nhưng nó khó hiểu vì cả hai đều trông giống nhau.

Vậy sự khác biệt giữa hai là gì?

Câu trả lời:


320
  • Spring MVC là một khung MVC hoàn chỉnh theo định hướng HTTP được quản lý bởi Spring Framework và dựa trên Servlets. Nó sẽ tương đương với JSF trong ngăn xếp JavaEE. Các yếu tố phổ biến nhất trong đó là các lớp được chú thích @Controller, trong đó bạn triển khai các phương thức bạn có thể truy cập bằng các yêu cầu HTTP khác nhau. Nó có một tương đương@RestController để thực hiện các API dựa trên REST.
  • Spring boot là một tiện ích để thiết lập các ứng dụng một cách nhanh chóng, cung cấp một cấu hình bên ngoài hộp để xây dựng các ứng dụng hỗ trợ Spring. Như bạn có thể biết, Spring tích hợp một loạt các mô-đun khác nhau dưới cái ô của nó , như spring-core , spring-data , spring-web (bao gồm Spring MVC, nhân tiện), v.v. Với công cụ này, bạn có thể cho Spring biết bao nhiêu trong số chúng sẽ sử dụng và bạn sẽ có được thiết lập nhanh cho chúng (bạn được phép tự thay đổi nó sau này).

Vì vậy, Spring MVC là một khung được sử dụng trong các ứng dụng web và Spring Boot là trình khởi tạo dự án sẵn sàng sản xuất dựa trên Spring . Bạn có thể thấy hữu ích khi truy cập wiki thẻ Spring MVC cũng như wiki thẻ Spring Boot trong SO.


29
Đúng _ + 1, Spring boot chỉ là một công cụ tự động cấu hình (được đóng gói dưới dạng khung). Spring mvc là khung web
Plain_Dude_S ngủing_Alone

2
Điều đó có nghĩa là Spring Boot được sử dụng để hiển thị trang xem (HTML) chỉ cho một bộ điều khiển trả về và đăng JSON và nếu tôi muốn sử dụng chế độ xem để hiển thị HTML, tôi phải sử dụng Spring MVC?
Osama Al-Banna

2
@ OsamaAl-Banna Spring MVC là một công nghệ lớp xem, về cơ bản nó xử lý các phản hồi yêu cầu HTTP, hoạt động như một bộ điều khiển (đối với HTML, bạn có thể kết hợp nó với thymeleaf, ví dụ, đối với REST + JSON, hãy sử dụng nó vì nó là như vậy, bởi vì việc chuyển đổi JSON được thực hiện với Jackson tích hợp). Spring Boot tích hợp toàn bộ các dự án ô mùa xuân (MVC + Data + Core ...) và cung cấp một cấu hình sẵn sàng sản xuất nhanh để sử dụng chúng.
Xtreme Biker

3
Điều này có nghĩa là tôi có thể định cấu hình ứng dụng web của mình Spring Bootsau đó hoàn thành chức năng web với Spring MVC?
Mike

1
@Mike chắc chắn là có
Xtreme Biker

105

Spring MVCSpring Boot được mô tả tốt trong các câu trả lời khác, và vì vậy mà không lặp lại điều đó, hãy để tôi chuyển thẳng đến chi tiết cụ thể. Spring BootSpring MVC không thể so sánh hoặc loại trừ lẫn nhau. Nếu bạn muốn phát triển ứng dụng web bằng Spring, dù sao bạn cũng sẽ sử dụng Spring MVC . Câu hỏi của bạn sau đó trở thành có nên sử dụng Spring Boot hay không.

Để phát triển các ứng dụng Spring phổ biến hoặc bắt đầu học Spring, tôi nghĩ rằng nên sử dụng Spring Boot . Nó làm giảm đáng kể công việc, sẵn sàng sản xuất và nhanh chóng được áp dụng rộng rãi.

Tôi đã thấy đôi khi những người mới bắt đầu hỏi câu hỏi này bởi vì trong STS (Spring Tool Suite) có hai trình hướng dẫn: một để tạo dự án Spring Boot và một để tạo dự án Spring MVC. Vì vậy, đề xuất của tôi sẽ là tạo một dự án Spring Boot và chọn Web làm mô-đun trong đó.


1
Khi bạn sử dụng spring-boot (với spring-data-rest và spring-web), bạn có nguyên tắc MVC ở đây, phải không? Tôi chỉ bối rối vì tôi nghĩ Spring MVC là phiên bản Spring duy nhất sử dụng Mô hình MVC.
watchme 16/03/18

5
spring-web không gì khác ngoài mô-đun spring-mvc
Sanjay


23

Trong thuật ngữ đơn giản, nó có thể được nêu là:

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

Và Spring Boot là một khung công tác, do đó, bản dựng của nó được xem xét để phát triển nhanh, cần ít thời gian hơn cho cấu hình và có sự hỗ trợ cộng đồng rất tốt.


19

Spring MVClà một dự án con của Spring Framework, nhắm mục tiêu thiết kế và phát triển các ứng dụng sử dụng mẫu MVC (Model-View-Controller). Spring MVC được thiết kế để tích hợp đầy đủ và hoàn toàn với Spring Framework và hầu hết các dự án phụ khác.

Spring Bootcó thể được hiểu khá rõ từ bài viết này của nhóm Spring Engineering. Nó được cho là có ý kiến, tức là nó chủ yếu ủng hộ một phong cách phát triển nhanh nhất định, nhưng nó được thiết kế đủ tốt để phù hợp với các ngoại lệ cho quy tắc, nếu bạn muốn. Nói tóm lại, đó là một quy ước về phương pháp cấu hình sẵn sàng hiểu nhu cầu của bạn để phá vỡ quy ước khi được bảo hành.


17

Đây là một số điểm chính phân biệt Spring, Spring MVC và Spring Boot:

Mùa xuân:

  1. Sự khác biệt chính là "Khả năng kiểm tra".
  2. Mùa xuân đến với DI và IOC. Thông qua đó tất cả các công việc khó khăn được thực hiện bởi hệ thống, chúng tôi không cần thực hiện bất kỳ loại công việc nào (như, thông thường chúng tôi xác định đối tượng của lớp theo cách thủ công nhưng thông qua Di chúng tôi chỉ chú thích với @Service hoặc @Component - lớp phù hợp quản lý các lớp đó).
  3. Thông qua chú thích @Autowired, chúng tôi dễ dàng giả định () nó tại thời điểm thử nghiệm đơn vị.
  4. Sao chép và mã Hệ thống nước. Trong JDBC, chúng tôi viết cùng một mã nhiều lần để thực hiện bất kỳ loại hoạt động cơ sở dữ liệu nào Spring giải quyết vấn đề đó thông qua Hibernate và ORM.
  5. Tích hợp tốt với các khung khác. Giống như Hibernate, ORM, Junit & Mockito.

Mùa xuân MVC

  1. Spring MVC framework là mô-đun của mùa xuân cung cấp sự phát triển ứng dụng web theo định hướng HTTP.
  2. Spring MVC có phân tách mã rõ ràng trên logic đầu vào (bộ điều khiển), logic nghiệp vụ (mô hình) và logic UI (khung nhìn).
  3. Mẫu MVC của Spring giúp phát triển các ứng dụng web linh hoạt và lỏng lẻo.
  4. Cung cấp nhiều cách mã hóa cứng khác nhau để tùy chỉnh ứng dụng của bạn dựa trên nhu cầu của bạn.

Khởi động mùa xuân:

  1. Tạo Ứng dụng Nhanh để thay vì quản lý một ứng dụng web lớn duy nhất, chúng tôi chia chúng thành các Dịch vụ Vi mô khác nhau có phạm vi và khả năng riêng.
  2. Cấu hình tự động bằng Web Jar: Trong Spring bình thường có rất nhiều cấu hình như DispatcherServlet, Quét thành phần, Xem bộ giải quyết, Web Jar, XML. (Ví dụ: nếu tôi muốn định cấu hình nguồn dữ liệu, Nhà máy quản lý giao dịch quản lý thực thể). Định cấu hình tự động khi không có sẵn bằng cách sử dụng đường dẫn lớp.
  3. Đi kèm với Spring Starters mặc định, đi kèm với một số phụ thuộc cấu hình Spring mặc định (như Spring Core, Web-MVC, Jackson, Tomcat, Xác thực, Liên kết dữ liệu, Ghi nhật ký). Đừng lo lắng về vấn đề phiên bản là tốt.

(Evolution như: Spring -> Spring MVC -> Spring Boot, Vì vậy, phiên bản mới hơn có khả năng tương thích với các tính năng của phiên bản cũ.) Lưu ý: Nó không chứa tất cả các điểm.


10

SpringBoot thực sự được cấu hình sẵn làm giảm cấu hình nồi hơi và cung cấp cách dễ nhất hoặc nhanh nhất để bắt đầu ứng dụng của bạn.

SpringBoot làm đau đầu cấu hình từ nhà phát triển đến chính bản thân họ chứ không phải Spring.

Hoàn toàn SpringBoot dựa trên khái niệm khung công tác Spring như bean, bộ điều khiển, dịch vụ, jpa, v.v.

Bạn có thể nói rằng SpringBoot là một trình bao bọc của Spring.

Trong SpringBoot theo cổng mặc định của Máy chủ là 8080 nhưng nếu bạn muốn thay đổi thì hãy truy cập application.properations của bạn và viết

máy chủ.port = 8084


10
  • Sử dụng spring boot bạn sẽ không cần phải xây dựng cấu hình. Điều này sẽ được thực hiện tự động khi bạn tạo dự án.

  • Nếu bạn sử dụng spring MVC, bạn cần tự xây dựng cấu hình. Nó phức tạp hơn, nhưng nó rất quan trọng.


Làm rõ đơn giản và thanh lịch
Sritam Jagadev

8

Không lặp lại điều tương tự trong các câu trả lời trước,
tôi đang viết câu trả lời này cho những người đang muốn bắt đầu một dự án mới và không biết đâu là khuôn khổ tốt nhất để khởi động dự án của bạn. Nếu bạn là người mới bắt đầu với khung này, điều tốt nhất tôi thích là Sử dụng boot mùa xuân (với STS / Spring Tool Suite ). Bởi vì nó giúp rất nhiều. Nó làm tất cả các cấu hình của riêng mình. Ngoài ra, sử dụng Hibernate với spring-boot làm khung cơ sở dữ liệu. Với sự kết hợp này, ứng dụng của bạn sẽ là tốt nhất. Tôi có thể đảm bảo rằng với kinh nghiệm của tôi.

Thậm chí đây là một trong những khuôn khổ tốt nhất cho JEE (hiện tại) điều này sẽ chết trong tương lai gần. Có những lựa chọn thay thế nhẹ sắp tới. Vì vậy, hãy cập nhật với kinh nghiệm của bạn đừng dính vào một khuôn khổ cụ thể nào. Điều tốt nhất là thông thạo các khái niệm, không phải trong các khuôn khổ.


5

Nghĩ theo cách này:

Spring MVC là một khung dựa trên web để thực hiện kiến ​​trúc MVC.

Spring Boot là một công cụ hướng đến lập trình viên. Lập trình viên phải tập trung vào lập trình và công cụ phải tập trung vào cấu hình. Vì vậy, chúng ta không cần lãng phí thời gian để cấu hình một bó xml để tạo ra một 'Xin chào thế giới' đơn giản.



1

Spring MVC và Spring Boot tồn tại cho các mục đích khác nhau. Vì vậy, không khôn ngoan khi so sánh nhau như các ứng cử viên.

Spring Boot là gì?

Spring Boot là một khung để đóng gói ứng dụng mùa xuân với các mặc định hợp lý. Điều đó có nghĩa là gì?. Bạn đang phát triển một ứng dụng web bằng Spring MVC, Spring Data, Hibernate và Tomcat. Làm thế nào để bạn đóng gói và triển khai ứng dụng này đến máy chủ web của bạn. Đến bây giờ, chúng ta phải viết thủ công các cấu hình, tệp XML, v.v. để triển khai lên máy chủ web.

Spring Boot thực hiện điều đó cho bạn với cấu hình Zero XML trong dự án của bạn. Tin tôi đi, bạn không cần mô tả triển khai, máy chủ web, v.v. Spring Boot là khuôn khổ kỳ diệu bao gồm tất cả các phụ thuộc cho bạn. Cuối cùng, ứng dụng web của bạn sẽ là một tệp JAR độc lập với các máy chủ được nhúng.

Nếu bạn vẫn còn bối rối về cách thức hoạt động của nó, vui lòng đọc về phát triển khung microservice bằng cách sử dụng spring boot.

Spring MVC là gì?

Nó là một khung ứng dụng web truyền thống giúp bạn xây dựng các ứng dụng web. Nó tương tự như khung Struts.

Spring MVC là một khung công tác Java được sử dụng để xây dựng các ứng dụng web. Nó tuân theo mẫu thiết kế Model-View-Controller. Nó thực hiện tất cả các tính năng cơ bản của khung lò xo cốt lõi như Inversion of Control, Dependency Injection.

Spring MVC cung cấp một giải pháp tao nhã để sử dụng MVC trong khung công tác mùa xuân nhờ sự trợ giúp của DispatcherServlet. Ở đây, DispatcherServlet là một lớp nhận yêu cầu đến và ánh xạ nó tới đúng tài nguyên như bộ điều khiển, mô hình và khung nhìn.

Tôi hy vọng điều này sẽ giúp bạn hiểu được sự khác biệt.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.