Spring MVC หรือ Spring Boot [ปิด]


114

สำหรับโครงการของ บริษัท ขนาดใหญ่ (เว็บ) คุณแนะนำให้ใช้ Spring MVC หรือ Spring-Boot หรือไม่

Spring-Boot ในแง่ของการกำหนดค่านั้นง่ายมากเมื่อเทียบกับ Spring MVC

ฉันสงสัยว่าฉันใช้ Spring-Boot จะมีข้อดีเหมือนกันของ Spring MVC หรือไม่?

คุณแนะนำเมนูใด?


29
ทางเลือกไม่ได้ระหว่าง MVC และ Boot เพราะ Boot สามารถใช้ MVC (และ autoconfigure มัน) หากคุณหมายถึง "Boot or Boot-less?" จากนั้นขึ้นอยู่กับว่า บริษัท ของคุณเปิดรับนวัตกรรม (และความเสี่ยงที่เกี่ยวข้อง) เพียงใด ไม่ว่าจะด้วยวิธีใดก็ตามการขอคำแนะนำไม่อยู่ในหัวข้อนี้
kryger

ขอขอบคุณสำหรับการตอบสนองของคุณ. ฉันรู้ว่าสปริงบูตสามารถกำหนดค่าให้สปริง mvc ได้ แต่ฉันสับสนว่าจะใช้ Spring-Boot หรือ Spring MVC ทั้งสองแบบมีลักษณะเหมือนกันหรือไม่ (Spring boot ง่ายต่อการตั้งค่า) จากประสบการณ์ของคุณตามที่คุณใช้?
Diego

1
Spring boot ช่วยประหยัดเวลาของคุณในการกำหนดค่าแอปพลิเคชันให้มีถั่วเริ่มต้นและจัดการการอ้างอิงด้วย แต่สปริงบูตและสปริง - เอ็มวีซีมีเป้าหมายที่แตกต่างกัน หากคุณต้องการใช้ spring-boot กับ spring-mvc คุณสามารถทำได้และคุณไม่จำเป็นต้องตั้งค่าใด ๆ เว้นแต่คุณจะต้องการแทนที่การกำหนดค่าแบบกำหนดเอง
EddúMeléndez

ขอขอบคุณสำหรับการตอบสนองของคุณ. สำหรับโครงการในอนาคตของฉันจะใช้ Spring -Boot ฉันคิดว่า Spring -Boot กำหนดค่าได้ง่ายกว่าและประหยัดเวลาได้มาก
Diego

2
และสปริงบูตไม่เข้ากันกับบรรจุภัณฑ์สงครามและคอนเทนเนอร์ servlet ภายนอกดู58.2 บรรจุภัณฑ์ jar ที่ปฏิบัติการได้และไฟล์สงคราม
Nicolas Labrot

คำตอบ:


106

คำแนะนำส่วนตัวของฉันคือการใช้ Spring Boot ด้วยเหตุผลหลายประการ

  1. ประการแรกคือ Boot คือ "อนาคตของฤดูใบไม้ผลิ" นั่นหมายความว่าเมื่อใช้ Boot คุณจะได้รับประโยชน์จากภาระผูกพันมากมายของชุมชน Spring โครงการ Spring ส่วนใหญ่ในปัจจุบันรวมเข้ากับ Boot อย่างสมบูรณ์แม้แต่ชุมชนก็เริ่มพัฒนาแอปพลิเคชันมากมายที่ใช้ Boot ตัวอย่างเช่นการจัดการและการตรวจสอบ ฉันสามารถแนะนำให้ไปที่Spring Boot Admin

  2. ด้วย Spring Boot คุณจะได้รับประโยชน์จากคุณสมบัติที่ดีและมีประโยชน์เช่นแอคชูเอเตอร์และรีโมตเชลล์สำหรับการจัดการและการตรวจสอบซึ่งจะปรับปรุงแอปพลิเคชันของคุณด้วยคุณสมบัติที่พร้อมใช้งานจริงซึ่งมีประโยชน์มาก

  3. คุณสมบัติที่ดีและทรงพลังและการควบคุมการกำหนดค่า - คุณสามารถกำหนดค่าแอปพลิเคชันของคุณapplication.properties/yml และขยายการบูตได้ด้วยวิธีที่ง่ายและน่าประทับใจแม้แต่การจัดการในแง่ของการลบล้างก็มีประสิทธิภาพมาก

  4. มันเป็นหนึ่งในแพลตฟอร์มที่พร้อมให้บริการขนาดเล็กตัวแรกและในความคิดของฉันตอนนี้มันดีที่สุด! แม้ว่าคุณจะไม่ได้สร้างโปรเจ็กต์บริการขนาดเล็กด้วยการบูตคุณก็สามารถได้รับประโยชน์จากการใช้วิธีการที่ทันสมัยซึ่งคุณมีโถที่สอดคล้องกันอัตโนมัติซึ่งจะได้รับประโยชน์จากคุณสมบัติทั้งหมดที่ฉันอธิบายไว้ข้างต้นหรือหากคุณต้องการคุณสามารถกำหนด บรรจุภัณฑ์เป็นสงครามคลาสสิกและปรับใช้สงครามของคุณในภาชนะใดก็ได้ที่คุณต้องการ

  5. การใช้แนวทางที่ชาญฉลาดและเป็นแบบแผนมากกว่าแนวทางการกำหนดค่าที่ช่วยลดขั้นตอนการเริ่มต้นและการกำหนดค่าของโครงการของคุณลงอย่างมาก ในความเป็นจริงคุณมีชุดการพึ่งพา Maven หรือ Gradle เริ่มต้นที่ทำให้การจัดการการพึ่งพาง่ายขึ้น จากนั้นด้วยคุณสมบัติการกำหนดค่าอัตโนมัติคุณจะได้รับประโยชน์จากการกำหนดค่ามาตรฐานจำนวนมากซึ่งถูกนำมาใช้ผ่านกรอบการกำหนดค่าเงื่อนไขในฤดูใบไม้ผลิ 4 คุณสามารถแทนที่ด้วยการกำหนดค่าเฉพาะของคุณเพียงแค่กำหนด bean ของคุณตามแบบที่คุณเห็นใน กำหนดค่าอัตโนมัติ JAR ของการพึ่งพาการบูต โปรดจำไว้ว่า Spring เป็นโอเพ่นซอร์สและคุณสามารถดูรหัสได้ นอกจากนี้เอกสารในความคิดของฉันก็ดี

  6. Spring initializer เป็นเครื่องมือเจ๋ง ๆ ที่หาได้จากลิงค์นี้: https://start.spring.io/เป็นเครื่องมือที่เจ๋งมากในการสร้างโปรเจ็กต์ของคุณด้วยวิธีที่รวดเร็ว


ฉันหวังว่าภาพสะท้อนนี้จะช่วยให้คุณตัดสินใจได้ว่าอะไรคือทางออกที่ดีที่สุด


1
ขอบคุณสำหรับคำตอบ ฉันมีความสับสนเล็กน้อยที่นี่ ฉันต้องการใช้ Spring 4 ในโปรเจ็กต์ของฉันเพราะฉันไม่ต้องใช้persistence.xmlไฟล์คอนฟิกูเรชันและคุณสมบัติอื่น ๆ อีกมากมาย ฉันสามารถใช้คุณสมบัติของสปริง 4 ในสปริงบูตได้หรือไม่? ถ้าใช่จะทำอย่างไร
งูพิษ

2
ฉันมักจะเห็นด้วยถ้าคุณกำลังวางแผนที่จะทำสิ่งที่น่ารักวานิลลา จำนวนครั้งที่ฉันพยายามจะบูตทำให้ปวดหัวและฉันก็ตะโกนใส่หน้าจอเพราะการบูตพยายามที่จะฉลาดเกินไปเกี่ยวกับสิ่งที่ฉันมีและท้ายที่สุดต้องทำมากกว่าเพื่อปิดสิ่งต่างๆมากกว่าที่ฉันจะเปิดสิ่งต่างๆ โดยใช้โปรเจ็กต์แบบไม่ใช้บูต มีสองสิ่งที่จบลงด้วยความฝันร้ายคือการพยายามทำงานร่วมกับ LDAP ที่จำเป็นต้องมีแคช db หรือการกำหนดค่า DataSource มากกว่าหนึ่งรายการที่มีการบูตพยายามสร้าง JdbcTemplate และอินสแตนซ์ไฮเบอร์เนตโดยที่ฉันไม่รู้และแม้แต่เริ่มฐานข้อมูล h3 ด้วยตัวเอง
Brett Ryan

1
การกำหนดค่าคุณสมบัติเป็นสิ่งที่ฉันไม่ได้หาวิธีควบคุม ในโปรเจ็กต์ที่ไม่ใช้บูตฉันจะสร้างคลาส AppConfig ที่มีการรองรับการอ่านคุณสมบัติมากเกินไปในไฟล์คุณสมบัติแอพของฉันที่ฉันสามารถใช้ใน JSP และ SpEL แต่ไม่สามารถหาวิธีการบูตได้
Brett Ryan

1
คำตอบนี้ยังใช้ได้อยู่หรือไม่ (หกเดือนต่อมา) ฉันกำลังตรวจสอบสิ่งนี้และฉันยังไม่เข้าใจว่าทำไมผู้คนถึงยังใช้ Spring ในเมื่อพวกเขามี Spring Boot ที่ยอดเยี่ยม ฉันหมายความว่าฉันชอบ Spring Boot มากแนวคิดของซอฟต์แวร์อัจฉริยะที่กำหนดค่าตัวเองนั้นยอดเยี่ยมมากสำหรับฉัน แต่ฉันสับสนมาก! อีกครั้งจะทำไมคนยังคงใช้ฤดูใบไม้ผลิเมื่อพวกเขามีรองเท้าฤดูใบไม้ผลิน่ากลัว?
Ahmad Hajjar

1
@AhmadHajjar สำหรับโครงการใหม่ฉันจะไปกับ Spring Boot อย่างแน่นอน ปัจจุบันเป็นเครื่องมือสำหรับผู้ใหญ่อย่างสมบูรณ์ แต่โปรดจำไว้ว่าผู้คนยังคงต้องรักษาโครงการ Spring แบบธรรมดาไว้บางคนอาจมุ่งตรงไปข้างหน้าเพื่อย้ายไปที่ Boot และอื่น ๆ อาจมีขนาดใหญ่มากจนอาจทำให้กระบวนการย้ายข้อมูลเป็นเรื่องยาก
Xtreme Biker

39

Spring Boot ใช้ Spring MVC! เป็นเพียงการกำหนดค่าอัตโนมัติและพร้อมใช้งานเมื่อคุณนำเข้า jar spring-boot-starter-web ดังนั้นโดยทั่วไปคุณกำลังพูดถึงว่าจะใช้ Spring Boot หรือตั้งค่า Spring Application ของคุณด้วยตนเอง ...


4
ใช่ _ + 1 สปริงบูตเป็นเพียงเครื่องมือกำหนดค่าอัตโนมัติ Spring mvc เป็นเว็บเฟรมเวิร์ก
Plain_Dude_Sleeping_Alone

@Plain_Dude_Sleeping_Alone ฉันเข้าใจว่า Spring MVC เป็นกรอบ คุณบอกว่า Spring Boot เป็นเพียงเครื่องมือ autoconfig เท่านั้นยังสามารถพิจารณาเป็น Framework ได้หรือไม่?
Jesse

@ เจสเซ่ทั้งสองอย่างถือได้ว่าเป็นเครื่องมือหรือกรอบ แต่สิ่งที่ผู้คนให้ความสำคัญกับที่นี่ก็คือสปริงบูตเป็นเครื่องมือสำหรับ Spring mvc web framework มันจะจัดเตรียมการกำหนดค่าสำเร็จรูปที่จำเป็นสำหรับ Spring mvc แม้ว่า booty นั้นอยู่ในรูปแบบของกรอบ ในที่สุดภาษาอังกฤษของฉันก็แย่มากจนอาจทำให้ใบหน้าของคุณไหม้ได้ Hehe
Plain_Dude_Sleeping_Alone

24

คุณสามารถไปที่ Spring Boot ได้อย่างแน่นอน เราได้เริ่มใช้ Spring Boot สำหรับการสร้างแอปพลิเคชันระดับองค์กรแล้ว มีข้อดีมากมายโดยมีรายการด้านล่างนี้:

  1. การกำหนดค่าโครงการของคุณจะค่อนข้างง่าย ไม่จำเป็นต้องดูแลไฟล์ XML สิ่งที่คุณต้องรู้คือคุณสามารถใช้ไฟล์application.properties ได้อย่างมีประสิทธิภาพเพียงใด

  2. ให้การใช้งานเริ่มต้นจำนวนมากเช่นหากคุณต้องการส่งอีเมลจะมีการใช้งานเริ่มต้น JavaMailSender

  3. การรวม Spring Hibernate และ JPA นั้นค่อนข้างง่าย

เช่นนี้มีมากมายคุณสามารถสำรวจตามความต้องการของคุณ


ขอบคุณมากสำหรับคำอธิบายของคุณ
Diego

Spring boot เป็นที่ต้องการเสมอเพราะคุณไม่ต้องจัดการกับ verbose XML และใช้ประโยชน์จากสถาปัตยกรรมไมโครเซอร์วิส
JorgeTovar

10

คุณสามารถใช้ Spring MVC ร่วมกับ Spring Boot ได้ตามที่ @kryger กล่าวว่ามันไม่ได้เป็นเอกสิทธิ์ระหว่างกันและการกำหนดค่าจะง่ายขึ้นฉันขอแนะนำให้คุณใช้http://www.thymeleaf.org/ซึ่งเป็นกรอบเทมเพลต การทำงานกับสิ่งนั้นก็เหมือนกับการทำงานกับ JSP แต่ไทม์ลีฟทำงานร่วมกับ HTML ได้อย่างราบรื่นดังนั้นโค้ดของคุณจะดูสะอาดตามากและคุณสามารถเพิ่มคุณสมบัติที่มีประโยชน์มากมาย


8

ฉันคิดว่า Spring Boot มีประโยชน์มากกว่า MVC เนื่องจากมีข้อดีหลายอย่างและคุณสมบัติในตัวซึ่งทำให้เชื่อถือได้มากกว่า MVC ใน Spring Boot สิ่งต่างๆส่วนใหญ่จะกำหนดค่าโดยอัตโนมัติและไม่จำเป็นต้องเขียน xml เหล่านั้นเหมือนที่เราทำใน MVC ซึ่งสามารถประหยัดเวลาได้

Spring Boot รวมไฟล์สงครามที่มีเวลาทำงานของเซิร์ฟเวอร์เช่น Tomcat สิ่งนี้ช่วยให้การแจกจ่ายและการปรับใช้เว็บแอปพลิเคชันทำได้ง่าย ในขณะที่อุตสาหกรรมกำลังก้าวไปสู่การปรับใช้ตามคอนเทนเนอร์ Spring Boot จึงมีประโยชน์ในบริบทนี้เช่นกัน

Spring MVC เป็นเฟรมเวิร์กแอปพลิเคชันบนเว็บ แม้ว่าคุณจะทำทุกอย่างใน Spring ได้โดยไม่ต้องใช้ Spring Boot แต่ Spring Boot ก็ช่วยให้คุณทำสิ่งต่างๆได้เร็วขึ้น

Spring boot ช่วยลดความซับซ้อนในการพึ่งพา Spring ของคุณไม่มีการชนกันของเวอร์ชันอีกต่อไปสามารถเรียกใช้โดยตรงจากบรรทัดคำสั่งโดยไม่ต้องใช้คอนเทนเนอร์แอปพลิเคชันสร้างได้มากขึ้นโดยใช้โค้ดน้อยลง - ไม่จำเป็นต้องใช้ XML หรือแม้แต่ web.xml, การกำหนดค่าอัตโนมัติ, เครื่องมือที่มีประโยชน์สำหรับการทำงาน ในการผลิตการเตรียมใช้งานฐานข้อมูลไฟล์กำหนดค่าเฉพาะสภาพแวดล้อมการรวบรวมเมตริก

สามารถดูข้อมูลพื้นฐานของ Spring Boot ได้ที่นี่


ขอบคุณสำหรับคำตอบ เป็นประโยชน์มากสำหรับการทำความเข้าใจเกี่ยวกับสปริงบูต สิ่งหนึ่งที่ฉันสับสนคือถ้าฉันจะต้องเปลี่ยนรุ่นสปริงที่ฉันใช้ฉันจะทำอย่างไรกับสปริงบูต? ฉันไม่เห็นที่ใดที่กำหนดเวอร์ชันฤดูใบไม้ผลิ
งูพิษ

ไม่ได้ใช้ maven ในโครงการของคุณ? @viper
erginduran

ใช่ฉันใช้มาเวน แต่เมื่อใช้สปริงบูตฉันไม่เห็นการพึ่งพาสปริงที่นั่น
viper
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.