स्प्रिंग एमवीसी और स्प्रिंग बूट के बीच अंतर


234

मैंने अभी-अभी स्प्रिंग सीखना शुरू किया है। अपने अगले चरण में, मैं बड़े वेब एप्लिकेशन विकसित करना चाहूंगा।

अब मैं सोच रहा हूं कि क्या मुझे स्प्रिंग बूट या स्प्रिंग एमवीसी के साथ शुरू करना चाहिए। मैंने पहले से ही कुछ सामान पढ़ा है, लेकिन यह भ्रामक है क्योंकि दोनों समान दिखते हैं।

तो दोनों के बीच अंतर क्या हैं?

जवाबों:


320
  • स्प्रिंग एमवीसी एक पूर्ण HTTP उन्मुख एमवीसी फ्रेमवर्क है जिसे स्प्रिंग फ्रेमवर्क द्वारा प्रबंधित किया गया है और यह सर्वलेट्स में आधारित है। यह JavaEE स्टैक में JSF के बराबर होगा। इसमें सबसे लोकप्रिय तत्व वर्ग हैं जिनके साथ एनोटेट किया जाता है @Controller, जहां आप उन तरीकों को लागू करते हैं जिन्हें आप विभिन्न HTTP अनुरोधों का उपयोग करके एक्सेस कर सकते हैं। इसमें @RestControllerREST- आधारित API को लागू करने के बराबर है।
  • स्प्रिंग बूट जल्दी से अनुप्रयोगों को स्थापित करने के लिए एक उपयोगिता है, वसंत-संचालित अनुप्रयोगों के निर्माण के लिए बॉक्स कॉन्फ़िगरेशन से बाहर की पेशकश। जैसा कि आप जानते हैं, स्प्रिंग अपनी छतरी के नीचे विभिन्न मॉड्यूलों की एक विस्तृत श्रृंखला को एकीकृत करता है , जैसे कि स्प्रिंग-कोर , स्प्रिंग-डेटा , स्प्रिंग-वेब (जिसमें स्प्रिंग एमवीसी शामिल है, वैसे) और इसी तरह। इस टूल से आप स्प्रिंग को बता सकते हैं कि उनमें से कितने का उपयोग करना है और आपको उनके लिए एक तेज़ सेटअप मिलेगा (आपको इसे बाद में खुद से बदलने की अनुमति है)।

तो, स्प्रिंग एमवीसी वेब अनुप्रयोगों में उपयोग की जाने वाली एक रूपरेखा है और स्प्रिंग बूट स्प्रिंग आधारित उत्पादन-तैयार परियोजना इनिशियलाइज़र है। आपको स्प्रिंग MVC टैग विकी के साथ-साथ SO में स्प्रिंग बूट टैग विकी पर जाने के लिए उपयोगी मिल सकता है ।


29
हां _ + 1, स्प्रिंग बूट सिर्फ एक ऑटोकैफिगरेशन टूल (फ्रेमवर्क के रूप में पैक किया गया) है। स्प्रिंग mvc वेब फ्रेमवर्क है
Plain_Dude_Sleeping_Alone

2
क्या इसका मतलब है कि स्प्रिंग बूट का उपयोग केवल नियंत्रक रिटर्न और पोस्ट JSON को देखने के लिए (HTML) पृष्ठ प्रदर्शित करने के लिए किया जाता है, और यदि मुझे HTML प्रदर्शित करने के लिए दृश्य का उपयोग करना है तो मुझे स्प्रिंग MVC का उपयोग करना होगा?
ओसामा अल-बन्ना

2
@ ओसामा-बन्ना स्प्रिंग एमवीसी एक दृश्य परत प्रौद्योगिकी है, यह मूल रूप से HTTP अनुरोध-प्रतिक्रियाओं को संभालती है, एक नियंत्रक के रूप में कार्य करती है (HTML के लिए, आप इसे thymeleaf के साथ जोड़ सकते हैं, उदाहरण के लिए, REST + JSON के लिए, इसका उपयोग करें, क्योंकि यह है, क्योंकि JSON रूपांतरण एकीकृत जैक्सन के साथ किया जाता है)। स्प्रिंग बूट पूरे स्प्रिंग छाता परियोजनाओं (एमवीसी + डेटा + कोर ...) को एकीकृत करता है और उनका उपयोग करने के लिए एक तेजी से उत्पादन के लिए तैयार कॉन्फ़िगरेशन प्रदान करता है।
Xtreme बाइकर

3
क्या इसका मतलब है कि मैं Spring Bootतब अपने वेब ऐप को कॉन्फ़िगर कर सकता हूं और फिर वेब कार्यक्षमता को पूरा कर सकता हूं Spring MVC?
माइक

1
@ निश्चित रूप से यह करता है
Xtreme बाइकर

105

स्प्रिंग एमवीसी और स्प्रिंग बूट को अन्य उत्तरों में अच्छी तरह से वर्णित किया गया है, और इसलिए इसे दोहराए बिना, मुझे सीधे बारीकियों पर कूदने दें। स्प्रिंग बूट और स्प्रिंग एमवीसी तुलना या परस्पर अनन्य नहीं हैं। यदि आप स्प्रिंग का उपयोग करके वेब अनुप्रयोग विकास करना चाहते हैं, तो आप वैसे भी स्प्रिंग एमवीसी का उपयोग करेंगे । आपका प्रश्न तब बनता है कि स्प्रिंग बूट का उपयोग करना है या नहीं।

सामान्य स्प्रिंग एप्लिकेशन विकसित करने या स्प्रिंग सीखने के लिए, मुझे लगता है कि स्प्रिंग बूट का उपयोग करने की सिफारिश की जाएगी। यह काम को आसान बनाता है, उत्पादन तैयार है और तेजी से व्यापक रूप से अपनाया जा रहा है।

मैंने कभी-कभी शुरुआती लोगों से यह सवाल पूछते देखा है क्योंकि एसटीएस (स्प्रिंग टूल सूट) में दो जादूगर हैं: एक स्प्रिंग बूट प्रोजेक्ट बनाने के लिए, और दूसरा स्प्रिंग एमवीसी प्रोजेक्ट बनाने के लिए। इसलिए मेरी सिफारिश स्प्रिंग बूट प्रोजेक्ट बनाने और उसमें एक मॉड्यूल के रूप में वेब को चुनने की होगी ।


1
जब आप स्प्रिंग-बूट (स्प्रिंग-डेटा-रेस्ट और स्प्रिंग-वेब के साथ) का उपयोग करते हैं तो आपके पास एमवीसी का सिद्धांत है? मुझे सिर्फ भ्रम हुआ क्योंकि मुझे लगा कि स्प्रिंग एमवीसी केवल स्प्रिंग संस्करण है जो एमवीसी-मॉडल का उपयोग करता है।
वॉचम

5
वसंत-वेब कुछ भी नहीं है लेकिन वसंत-एमवीसी मॉड्यूल
संजय


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

और स्प्रिंग बूट एक ओपिनियेटेड ढांचा है, इसलिए इसका निर्माण तेजी से विकास के लिए ध्यान में रखते हुए, कॉन्फ़िगरेशन के लिए कम समय की आवश्यकता है और एक बहुत बड़ा सामुदायिक समर्थन है।


19

Spring MVCस्प्रिंग फ्रेमवर्क की एक उप-परियोजना है, जो एमवीसी (मॉडल-व्यू-कंट्रोलर) पैटर्न का उपयोग करने वाले अनुप्रयोगों के डिजाइन और विकास को लक्षित करता है। स्प्रिंग एमवीसी को पूरी तरह से और पूरी तरह से स्प्रिंग फ्रेमवर्क के साथ और पूरी तरह से एकीकृत करने के लिए डिज़ाइन किया गया है, अधिकांश अन्य उप-परियोजनाएं।

Spring Bootस्प्रिंग इंजीनियरिंग टीम के इस लेख से काफी अच्छी तरह से समझा जा सकता है । यह माना जाता है, अर्थात यह तेजी से विकास की एक निश्चित शैली की जोरदार वकालत करता है, लेकिन नियम के अपवादों को समायोजित करने के लिए इसे अच्छी तरह से डिज़ाइन किया गया है, यदि आप करेंगे। संक्षेप में, यह विन्यास पद्धति पर एक सम्मेलन है जो कि वारंट होने पर सम्मेलन को तोड़ने की आपकी आवश्यकता को समझने के लिए तैयार है।


17

यहाँ कुछ मुख्य बिंदु है जो स्प्रिंग, स्प्रिंग MVC और स्प्रिंग बूट को अलग करता है:

वसंत :

  1. मुख्य अंतर "टेस्ट-क्षमता" है।
  2. वसंत डीआई और आईओसी के साथ आते हैं। जिसके माध्यम से सिस्टम द्वारा की गई सभी कड़ी मेहनत हमें किसी भी तरह का काम करने की आवश्यकता नहीं है (जैसे, आम तौर पर हम वर्ग की वस्तु को मैन्युअल रूप से परिभाषित करते हैं लेकिन Di के माध्यम से हम सिर्फ @ सेवा या @Component - मिलान वर्ग का प्रबंधन करते हैं)।
  3. @Autowired एनोटेशन के माध्यम से हम आसानी से इकाई परीक्षण के समय इसका मजाक उड़ाते हैं ()।
  4. डुप्लीकेशन और प्लंबिंग कोड। JDBC में हम किसी भी तरह के डेटाबेस ऑपरेशन को करने के लिए एक ही कोड को कई बार लिखते हैं। स्प्रिंग उस समस्या को हाइबरनेट और ORM के माध्यम से हल करता है।
  5. अन्य रूपरेखाओं के साथ अच्छा एकीकरण। जैसे हाइबरनेट, ORM, जूनिट और मॉकिटो।

वसंत MVC

  1. स्प्रिंग MVC फ्रेमवर्क वसंत का मॉड्यूल है जो सुविधा HTTP उन्मुख वेब अनुप्रयोग विकास प्रदान करता है।
  2. स्प्रिंग एमवीसी में इनपुट लॉजिक (कंट्रोलर), बिजनेस लॉजिक (मॉडल), और यूआई लॉजिक (व्यू) पर स्पष्ट कोड पृथक्करण है।
  3. स्प्रिंग एमवीसी पैटर्न लचीला और शिथिल युग्मित वेब एप्लिकेशन विकसित करने में मदद करता है।
  4. अपनी आवश्यकता के आधार पर अपने आवेदन को अनुकूलित करने के लिए विभिन्न कठिन कोडित तरीके प्रदान करें।

स्प्रिंग बूट:

  1. त्वरित अनुप्रयोग का निर्माण, ताकि एकल बड़े वेब अनुप्रयोग को प्रबंधित करने के बजाय, हम उन्हें अलग-अलग माइक्रोसर्विसेज में अलग-अलग विभाजित करें, जिनकी अपनी गुंजाइश और क्षमता है।
  2. वेब जार का उपयोग करते हुए ऑटो कॉन्फ़िगरेशन: सामान्य स्प्रिंग में डिस्पैचरसर्वलेट, कंपोनेंट स्कैन, व्यू रिज़ॉल्वर, वेब जार, एक्सएमएल जैसे बहुत सारे कॉन्फ़िगरेशन होते हैं। (उदाहरण के लिए, यदि मैं डेटा स्रोत, इकाई प्रबंधक लेनदेन प्रबंधक कारखाना कॉन्फ़िगर करना चाहूंगा)। वर्ग-पथ का उपयोग करते हुए उपलब्ध नहीं होने पर स्वचालित रूप से कॉन्फ़िगर करें।
  3. डिफॉल्ट स्प्रिंग स्टार्टर्स के साथ आता है, जो कुछ डिफॉल्ट स्प्रिंग कॉन्फ़िगरेशन डिपेंडेंसी (जैसे स्प्रिंग कोर, वेब-एमवीसी, जैक्सन, तोमकैट, वैलिडेशन, डेटा बाइंडिंग, लॉगिंग) के साथ आता है। संस्करण समस्या के बारे में भी चिंता न करें।

(जैसे विकास: स्प्रिंग -> स्प्रिंग एमवीसी -> स्प्रिंग बूट, इसलिए नए संस्करण में पुराने संस्करण सुविधाओं की संगतता है।) नोट: इसमें सभी बिंदु नहीं हैं।


10

स्प्रिंगबूट वास्तव में पहले से कॉन्फ़िगर किया गया है जो बॉयलर कॉन्फ़िगरेशन को कम कर देता है और आपके आवेदन को शुरू करने का सबसे आसान या त्वरित तरीका प्रदान करता है।

स्प्रिंगबूट डेवलपर के कॉन्फ़िगरेशन के सिरदर्द को वसंत के बजाय स्वयं के रूप में लेता है।

स्पष्ट रूप से स्प्रिंगबूट स्प्रिंग फ्रेमवर्क अवधारणा पर आधारित है, जैसे बीन, नियंत्रक, सेवाएं, जेपीए आदि।

आप कह सकते हैं कि स्प्रिंगबूट स्प्रिंग का एक आवरण है।

सर्वर के डिफ़ॉल्ट पोर्ट से स्प्रिंगबूट में 8080 है लेकिन अगर आप बदलना चाहते हैं तो अपने एप्लिकेशन पर जाएं। लिखने और लिखने के लिए

server.port = 8084


10
  • स्प्रिंग बूट का उपयोग करके आपको कॉन्फ़िगरेशन बनाने की आवश्यकता नहीं होगी। प्रोजेक्ट बनाते समय यह अपने आप हो जाएगा।

  • यदि आप स्प्रिंग MVC का उपयोग करते हैं, तो आपको स्वयं कॉन्फ़िगरेशन बनाने की आवश्यकता है। यह अधिक जटिल है, लेकिन यह महत्वपूर्ण है।


सरल और सुरुचिपूर्ण स्पष्टीकरण
श्रीतम जगदेव

8

पिछले उत्तरों में एक ही बात को दोहराए बिना,
मैं यह जवाब उन लोगों के लिए लिख रहा हूं , जो एक नई परियोजना शुरू करना चाहते हैं और यह नहीं जानते कि आपकी परियोजना को शुरू करने के लिए सबसे अच्छा ढांचा कौन सा है। यदि आप इस रूपरेखा के शुरुआती हैं तो मुझे सबसे अच्छी बात यह है कि यूज़ स्प्रिंग बूट का उपयोग करें (एसटीएस / स्प्रिंग टूल सूट के साथ )। क्योंकि यह बहुत मदद करता है। यह अपने आप ही सभी विन्यास करता है। इसके अतिरिक्त, डेटाबेस फ्रेमवर्क के रूप में स्प्रिंग-बूट के साथ हाइबरनेट का उपयोग करें । इस संयोजन के साथ, आपका आवेदन सबसे अच्छा होगा। मैं अपने अनुभवों के साथ इसकी गारंटी दे सकता हूं।

यहां तक ​​कि यह जेईई (वर्तमान में) के लिए सबसे अच्छे ढांचे में से एक है। यह निकट भविष्य में मरने वाला है। हल्के विकल्प सामने आ रहे हैं। तो अपने अनुभव के साथ अद्यतन रखें एक विशेष ढांचे के लिए छड़ी नहीं है। सबसे अच्छी बात अवधारणाओं में धाराप्रवाह है, रूपरेखा में नहीं।


5

इस तरह से सोचें:

स्प्रिंग एमवीसी एमवीसी वास्तुकला को लागू करने के लिए एक वेब आधारित ढांचा है।

स्प्रिंग बूट प्रोग्रामर के लिए उन्मुख एक उपकरण है। प्रोग्रामर को प्रोग्रामिंग पर ध्यान देना चाहिए और टूल को कॉन्फ़िगरेशन पर ध्यान देना चाहिए। इसलिए हमें अपना समय व्यतीत करने के लिए एक सरल 'हैलो वर्ल्ड' बनाने के लिए xml का एक गुच्छा कॉन्फ़िगर करने की आवश्यकता नहीं है।



1

स्प्रिंग एमवीसी और स्प्रिंग बूट अलग उद्देश्य के लिए मौजूद हैं। इसलिए, दावेदारों के रूप में एक दूसरे की तुलना करना बुद्धिमानी नहीं है।

स्प्रिंग बूट क्या है?

स्प्रिंग बूट समझदार चूक के साथ वसंत आवेदन की पैकेजिंग के लिए एक रूपरेखा है। इसका क्या मतलब है?। आप स्प्रिंग एमवीसी, स्प्रिंग डेटा, हाइबरनेट और टॉमकैट का उपयोग करके एक वेब एप्लिकेशन विकसित कर रहे हैं। आप इस एप्लिकेशन को अपने वेब सर्वर पर कैसे पैकेज और तैनात करते हैं। अब तक, हमें वेब सर्वर पर तैनाती के लिए मैन्युअल रूप से कॉन्फ़िगरेशन, एक्सएमएल फाइलें आदि लिखना होगा।

स्प्रिंग बूट आपके प्रोजेक्ट में शून्य XML कॉन्फ़िगरेशन के साथ आपके लिए करता है। मेरा विश्वास करो, आपको तैनाती डिस्क्रिप्टर, वेब सर्वर आदि की आवश्यकता नहीं है। स्प्रिंग बूट जादुई ढांचा है जो आपके लिए सभी निर्भरता को बंडल करता है। अंत में आपका वेब एप्लिकेशन एंबेडेड सर्वर के साथ एक स्टैंडअलोन JAR फाइल होगा।

यदि आप अभी भी असमंजस में हैं कि यह कैसे काम करता है, तो कृपया स्प्रिंग बूट का उपयोग करते हुए माइक्रोसैसवर्क फ्रेमवर्क विकास के बारे में पढ़ें।

स्प्रिंग एमवीसी क्या है?

यह एक पारंपरिक वेब एप्लिकेशन फ्रेमवर्क है जो आपको वेब एप्लिकेशन बनाने में मदद करता है। यह स्ट्रट्स ढांचे के समान है।

स्प्रिंग एमवीसी एक जावा फ्रेमवर्क है जिसका उपयोग वेब एप्लिकेशन बनाने के लिए किया जाता है। यह मॉडल-व्यू-कंट्रोलर डिज़ाइन पैटर्न का अनुसरण करता है। यह इनवॉइस ऑफ कंट्रोल, डिपेंडेंसी इंजेक्शन जैसे एक कोर स्प्रिंग फ्रेमवर्क की सभी बुनियादी विशेषताओं को लागू करता है।

एक स्प्रिंग एमवीसी डिस्पैचरसर्वलेट की मदद से वसंत ढांचे में एमवीसी का उपयोग करने के लिए एक सुरुचिपूर्ण समाधान प्रदान करता है। यहाँ, DispatcherServlet एक वर्ग है जो आने वाले अनुरोध को प्राप्त करता है और इसे सही संसाधन जैसे नियंत्रकों, मॉडलों और विचारों के लिए मैप करता है।

मुझे आशा है कि इससे आपको अंतर समझने में मदद मिलेगी।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.