Spring MVC hoặc Spring Boot [đã đóng]


114

Đối với một dự án công ty lớn (web), bạn khuyên bạn nên sử dụng Spring MVC hay Spring-Boot?

Về cấu hình, Spring-Boot rất dễ dàng so với Spring MVC.

Tôi tự hỏi liệu tôi sử dụng Spring-Boot có thể có những ưu điểm giống như Spring MVC không?

Bạn đề xuất món gì?


29
Sự lựa chọn không phải giữa MVC và Boot vì Boot có thể sử dụng MVC (và tự động cấu hình nó) . Nếu ý bạn là "Boot hay Boot-less?" thì nó phụ thuộc vào mức độ cởi mở với sự đổi mới (và những rủi ro liên quan) của công ty bạn. Dù bằng cách nào, yêu cầu đề xuất lạc đề ở đây.
kryger

Cảm ơn bạn đã phản hồi. Tôi nhận ra rằng khởi động mùa xuân có thể được định cấu hình thành Spring mvc. Nhưng tôi phân vân không biết nên sử dụng Spring-Boot hay Spring MVC, cả hai đều có đặc điểm giống nhau (Spring boot dễ cài đặt). Từ kinh nghiệm của bạn khi bạn sử dụng?
Diego

1
Khởi động mùa xuân tiết kiệm thời gian của bạn để cấu hình một ứng dụng có các bean mặc định và quản lý các phần phụ thuộc. Tuy nhiên, spring-boot và spring-mvc có những mục tiêu khác nhau. Nếu bạn muốn sử dụng spring-boot với spring-mvc, bạn có thể và không cần thiết lập bất cứ thứ gì trừ khi bạn muốn ghi đè cấu hình tùy chỉnh.
Eddú Meléndez

Cảm ơn bạn đã phản hồi. Đối với dự án tương lai của tôi sẽ sử dụng Spring -Boot. Tôi nghĩ Spring -Boot dễ cấu hình hơn và tiết kiệm rất nhiều thời gian.
Diego

2
Và khởi động lò xo là không tương thích với một bao bì chiến tranh và một container servlet bên ngoài, thấy 58,2 Bao bì thực thi jar và chiến tranh file
Nicolas Labrot

Câu trả lời:


106

Lời khuyên cá nhân của tôi là chắc chắn sử dụng Spring Boot vì nhiều lý do.

  1. Đầu tiên là Boot là "tương lai của mùa xuân". Điều đó có nghĩa là với Boot bạn có thể hưởng lợi từ nhiều cam kết của cộng đồng Spring. Hầu hết các dự án Spring ngày nay đều được tích hợp hoàn toàn với Boot, thậm chí cộng đồng còn bắt đầu phát triển nhiều ứng dụng dựa trên Boot. Ví dụ để quản lý và giám sát. Tôi có thể đề xuất xem Spring Boot Admin

  2. Với Spring Boot, bạn có thể hưởng lợi từ các tính năng rất hay và hữu ích như bộ truyền động và trình bao từ xa để quản lý và giám sát, giúp cải thiện ứng dụng của bạn với các tính năng sẵn sàng sản xuất rất hữu ích.

  3. Các thuộc tính và điều khiển cấu hình rất đẹp và mạnh mẽ - bạn có thể định cấu hình ứng dụng của mình application.properties/yml và mở rộng khởi động một cách rất đơn giản và ấn tượng, ngay cả việc quản lý về ghi đè cũng rất mạnh mẽ.

  4. Nó là một trong những nền tảng sẵn sàng cho dịch vụ vi mô đầu tiên, và theo quan điểm của tôi hiện nay nó là nền tảng tốt nhất! Ngay cả khi bạn không xây dựng một dự án dịch vụ vi mô có khởi động, bạn có thể sử dụng phương pháp tiếp cận hiện đại, trong đó bạn có một jar tự động nhất quán có thể được hưởng lợi từ tất cả các tính năng mà tôi đã mô tả ở trên hoặc nếu bạn thích, bạn có thể áp đặt đóng gói như một cuộc chiến cổ điển và triển khai cuộc chiến của bạn trong bất kỳ thùng chứa nào bạn muốn.

  5. Sử dụng phương pháp tiếp cận thông minh và quy ước về cấu hình giúp giảm đáng kể giai đoạn khởi động và cấu hình dự án của bạn. Trên thực tế, bạn có một tập hợp các phụ thuộc Maven hoặc Gradle bắt đầu giúp đơn giản hóa việc quản lý phụ thuộc. Sau đó, với đặc tính cấu hình tự động, bạn có thể hưởng lợi từ rất nhiều cấu hình tiêu chuẩn, được giới thiệu thông qua khung Cấu hình có điều kiện trong Spring 4. Bạn có thể ghi đè nó bằng các cấu hình cụ thể của mình chỉ cần xác định bean của bạn theo quy ước mà bạn có thể thấy trong JAR tự động cấu hình phụ thuộc Boot. Hãy nhớ rằng Spring là mã nguồn mở và bạn có thể thấy mã. Ngoài ra, tài liệu theo ý kiến ​​của tôi là tốt.

  6. Spring khởi tạo là một công cụ thú vị có thể đạt được tại liên kết này: https://start.spring.io/ là một công cụ rất thú vị chỉ để tạo dự án của bạn một cách rất nhanh chóng.


Tôi hy vọng rằng sự phản ánh này có thể giúp bạn quyết định đâu là giải pháp tốt nhất.


1
Cảm ơn bạn đã trả lời. Tôi có một chút nhầm lẫn ở đây. Tôi muốn sử dụng Spring 4 trong dự án của mình vì tôi sẽ không phải sử dụng persistence.xmltệp cấu hình và nhiều tính năng khác. Tôi có thể có các tính năng của Spring 4 trong khởi động mùa xuân không? Nếu có, làm thế nào để làm điều đó
viper

2
Tôi sẽ có xu hướng đồng ý nếu bạn đang lên kế hoạch làm những điều khá vani. Số lần tôi cố gắng khởi động gây ra đau đầu và tôi la hét trên màn hình vì khởi động cố gắng quá thông minh về những phụ thuộc tôi có và cuối cùng phải làm nhiều thứ hơn để tắt mọi thứ hơn là tôi bật mọi thứ sử dụng một dự án không khởi động. Một vài điều cuối cùng khiến tôi gặp khó khăn là cố gắng làm việc với LDAP nơi cần có bộ đệm db hoặc định cấu hình nhiều hơn một DataSource có khởi động đang cố gắng tạo các phiên bản JdbcTemplate và ngủ đông mà tôi không biết và thậm chí tự khởi động cơ sở dữ liệu h3.
Brett Ryan

1
Cấu hình thuộc tính cũng là thứ mà tôi chưa tìm ra cách kiểm soát. Trong các dự án không khởi động, tôi sẽ tạo một lớp AppConfig có hỗ trợ quá tải cho việc đọc các thuộc tính trong tệp thuộc tính ứng dụng của tôi mà tôi có thể sử dụng trong JSP và SpEL nhưng không thể tìm ra cách thực hiện tương tự với khởi động.
Brett Ryan

1
Câu trả lời này có còn hợp lệ không (sáu tháng sau) Tôi đang xem xét vấn đề này và tôi vẫn không hiểu tại sao mọi người vẫn sử dụng Spring, khi họ có Spring Boot tuyệt vời? Ý tôi là tôi rất thích Spring Boot, ý tưởng về phần mềm thông minh tự cấu hình nó rất tuyệt vời đối với tôi nhưng tôi rất bối rối! một lần nữa tại sao mọi người vẫn sử dụng Spring, khi họ có Spring Boot tuyệt vời?
Ahmad Hajjar

1
@AhmadHajjar, đối với một dự án mới, tôi chắc chắn sẽ sử dụng Spring Boot. Hiện tại nó là một công cụ hoàn toàn trưởng thành. Nhưng hãy nhớ rằng mọi người vẫn cần duy trì các dự án Spring đơn giản, một số trong số họ có thể chuyển thẳng sang Boot và những người khác có thể quá lớn nên sẽ khiến quá trình di chuyển trở nên khó khăn.
Xtreme Biker

39

Spring Boot sử dụng Spring MVC! Nó chỉ được định cấu hình tự động và sẵn sàng sử dụng khi bạn nhập vào bình web spring-boot-starter-web. Vì vậy, về cơ bản bạn đang nói về việc nên sử dụng Spring Boot hay thiết lập thủ công Ứng dụng Spring của bạn ...


4
Yep _ + 1, Spring khởi động được cụ chỉ tự động cấu hình, Spring MVC là khuôn khổ web
Plain_Dude_Sleeping_Alone

@Plain_Dude_Sleeping_Alone Tôi hiểu rằng Spring MVC là một khuôn khổ. Bạn nói Spring Boot chỉ là một công cụ autoconfig, nó cũng có thể được coi là một Framework?
Jesse

@Jesse, cả hai đều có thể được coi là công cụ hoặc khuôn khổ. Nhưng những gì mọi người nhấn mạnh ở đây là khởi động mùa xuân đúng hơn là một công cụ cho khuôn khổ web mvc mùa xuân. Tuy nhiên, nó sẽ cung cấp một cấu hình sẵn sàng cần thiết cho Spring mvc, bản thân chiến lợi phẩm ở dạng khung. Cuối cùng, tiếng Anh của tôi tệ đến mức có thể làm bỏng mặt bạn. Hehe
Plain_Dude_Sleeping_Alone

24

Bạn chắc chắn có thể sử dụng Spring Boot. Chúng tôi đã bắt đầu sử dụng Spring Boot để xây dựng ứng dụng doanh nghiệp. Nó có rất nhiều ưu điểm, liệt kê một số bên dưới đây:

  1. Cấu hình dự án của bạn sẽ khá đơn giản. Không cần duy trì tệp XML, tất cả những gì bạn cần biết là bạn có thể sử dụng tệp application.properties hiệu quả như thế nào .

  2. Cung cấp nhiều triển khai mặc định, ví dụ: nếu bạn cần gửi email, nó cung cấp triển khai mặc định JavaMailSender

  3. Việc tích hợp Spring Hibernate và JPA sẽ khá đơn giản.

Như thế này có rất nhiều, bạn có thể khám phá dựa trên nhu cầu của bạn.


Cảm ơn rất nhiều vì lời giải thích của bạn
Diego

Khởi động mùa xuân luôn luôn ưa thích bởi vì bạn không phải đối phó với tiết XML và họ tận dụng kiến trúc vi-dịch vụ
JorgeTovar

10

Bạn có thể sử dụng Spring MVC với khởi động mùa xuân như @kryger đã nói, chúng không độc quyền giữa chúng và cấu hình sẽ dễ dàng hơn, ngoài ra tôi khuyên bạn nên sử dụng http://www.thymeleaf.org/ là khuôn khổ mẫu. Làm việc với điều đó giống như làm việc với JSP nhưng thymeleaf tích hợp hoàn toàn với HTML, vì vậy mã của bạn trông rất sạch sẽ và bạn có thể thêm rất nhiều tính năng hữu ích.


8

Tôi nghĩ Spring Boot hữu ích hơn MVC, vì nó có nhiều ưu điểm và các tính năng có sẵn khiến nó đáng tin cậy hơn MVC. Trong Spring Boot, hầu hết mọi thứ đều được cấu hình tự động và không cần viết xml như chúng ta làm trong MVC, điều này có thể tiết kiệm thời gian.

Spring Boot gói một tệp chiến tranh với thời gian chạy của máy chủ như Tomcat. Điều này cho phép dễ dàng phân phối và triển khai các ứng dụng web. Khi ngành đang hướng tới triển khai dựa trên vùng chứa, Spring Boot cũng rất hữu ích trong bối cảnh này.

Spring MVC là khung ứng dụng web. Mặc dù bạn có thể làm mọi thứ trong Spring mà không cần Spring Boot, nhưng Spring Boot giúp bạn hoàn thành công việc nhanh hơn.

Khởi động mùa xuân đơn giản hóa sự phụ thuộc vào Spring của bạn, không có nhiều xung đột phiên bản, có thể chạy trực tiếp từ dòng lệnh mà không cần vùng chứa ứng dụng, xây dựng nhiều hơn với ít mã hơn - không cần XML, thậm chí không cần web.xml, tự động cấu hình, các công cụ hữu ích để chạy trong sản xuất, khởi tạo cơ sở dữ liệu, tệp cấu hình môi trường cụ thể, thu thập số liệu.

Thông tin cơ bản về Spring Boot có thể tìm thấy tại đây


Cảm ơn bạn đã trả lời. Nó rất hữu ích để hiểu về khởi động mùa xuân. Một điều tôi bối rối là, nếu tôi sẽ phải thay đổi phiên bản mùa xuân mà tôi đang sử dụng, tôi sẽ làm thế nào với khởi động mùa xuân? Tôi không thể thấy bất kỳ nơi nào mà phiên bản mùa xuân được xác định.
viper

Không sử dụng maven trong dự án của bạn? @viper
erginduran

vâng tôi đã sử dụng maven. nhưng bằng cách sử dụng khởi động mùa xuân, tôi không thể thấy các phụ thuộc mùa xuân ở đó.
viper
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.