स्प्रिंग MVC या स्प्रिंग बूट [बंद]


114

एक बड़ी कंपनी (वेब) परियोजना के लिए, क्या आप स्प्रिंग एमवीसी या स्प्रिंग-बूट का उपयोग करने की सलाह देते हैं?

स्प्रिंग-बूट, कॉन्फ़िगरेशन के संदर्भ में, स्प्रिंग एमवीसी की तुलना में बहुत आसान है।

मुझे आश्चर्य है कि अगर मैं स्प्रिंग-बूट का उपयोग करता हूं तो स्प्रिंग एमवीसी के समान लाभ हो सकते हैं?

आप क्या सलाह देते हैं?


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

आपकी प्रतिक्रिया के लिए धन्यवाद। मुझे एहसास हुआ कि स्प्रिंग बूट को स्प्रिंग पीवीसी पर कॉन्फ़िगर किया जा सकता है। लेकिन मुझे भ्रम है कि स्प्रिंग-बूट या स्प्रिंग एमवीसी का उपयोग करना दोनों की एक ही विशेषता है (स्प्रिंग बूट सेट करना आसान है)। अपने अनुभव से जैसे आप उपयोग करते हैं?
डिएगो

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

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

2
और स्प्रिंग बूट एक युद्ध पैकेजिंग और एक बाहरी सर्वलेट कंटेनर के साथ असंगत नहीं है, 58.2 पैकेजिंग निष्पादन योग्य जार और युद्ध फ़ाइलों को देखें
निकोलस लैब्रोट

जवाबों:


106

मेरी व्यक्तिगत सलाह कई कारणों से स्प्रिंग बूट का उपयोग करने की निश्चित रूप से है।

  1. पहला यह है कि बूट "स्प्रिंग का भविष्य" है। इसका मतलब है कि बूट के साथ आप स्प्रिंग समुदाय की कई प्रतिबद्धताओं से लाभ उठा सकते हैं। अधिकांश स्प्रिंग प्रोजेक्ट आज बूट के साथ पूरी तरह से एकीकृत हैं, यहां तक ​​कि समुदाय बूट के आधार पर कई एप्लिकेशन विकसित करना शुरू कर देता है। उदाहरण के लिए प्रबंधन और निगरानी के लिए। मैं स्प्रिंग बूट एडमिन को देखने का सुझाव दे सकता हूं

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

  3. बहुत अच्छा और शक्तिशाली गुण और कॉन्फ़िगरेशन नियंत्रण - आप अपने एप्लिकेशन को application.properties/yml बहुत सरल और प्रभावशाली तरीके से बूट कर सकते हैं और विस्तारित कर सकते हैं , यहां तक ​​कि ओवरराइडिंग के संदर्भ में प्रबंधन बहुत शक्तिशाली है।

  4. यह पहले माइक्रो-सर्विस तैयार प्लेटफार्मों में से एक है, और मेरी राय में आजकल यह सबसे अच्छा है! यहां तक ​​कि अगर आप बूट के साथ एक माइक्रो-सेवा परियोजना का निर्माण नहीं करते हैं, तो आप एक आधुनिक दृष्टिकोण का उपयोग करके लाभ उठा सकते हैं जिसमें आपके पास एक ऑटो-सुसंगत जार है जो कि ऊपर वर्णित सभी सुविधाओं से लाभ उठा सकता है या यदि आप चाहें तो आप इसे लगा सकते हैं एक शास्त्रीय युद्ध के रूप में पैकेजिंग करें और अपने युद्ध को उन कंटेनरों में से किसी एक में तैनात करें जो आप चाहते हैं।

  5. कॉन्फ़िगरेशन दृष्टिकोण पर एक बुद्धिमान और सम्मेलन का उपयोग जो आपके प्रोजेक्ट के स्टार्टअप और कॉन्फ़िगरेशन चरण को काफी कम करता है। वास्तव में आपके पास स्टार्टर मावेन या ग्रैडल निर्भरता का एक सेट है जो निर्भरता प्रबंधन को सरल करता है। फिर ऑटो-कॉन्फ़िगरेशन विशेषता के साथ आप बहुत सारे मानक कॉन्फ़िगरेशनों से लाभ उठा सकते हैं, जो कि स्प्रिंग 4. में सशर्त कॉन्फ़िगरेशन ढांचे के माध्यम से पेश किए गए हैं। आप इसे अपने कॉन्फिडेंस के साथ अपने बीन को परिभाषित करने वाले विशिष्ट कॉन्फ़िगरेशन के साथ ओवरराइड कर सकते हैं जिसे आप देख सकते हैं बूट निर्भरता का स्वतः-कॉन्फ़िगर JAR। याद रखें कि स्प्रिंग ओपन-सोर्स है और आप कोड देख सकते हैं। साथ ही मेरी राय में प्रलेखन अच्छा है।

  6. स्प्रिंग इनिलाइज़र इस लिंक पर प्राप्त होने वाला एक ठंडा उपकरण है: https://start.spring.io/ बहुत तेज़ तरीके से अपनी परियोजना बनाने के लिए एक बहुत अच्छा उपकरण है।


मुझे उम्मीद है कि यह प्रतिबिंब आपको यह तय करने में मदद कर सकता है कि सबसे अच्छा समाधान क्या है।


1
जवाब के लिए धन्यवाद। मुझे यहां थोड़ा भ्रम है। मैं अपनी परियोजना में स्प्रिंग 4 का उपयोग करना चाहता हूं क्योंकि मुझे persistence.xmlकॉन्फ़िगरेशन फ़ाइल और कई अन्य विशेषताओं का उपयोग नहीं करना है। क्या मेरे पास स्प्रिंग बूट में स्प्रिंग 4 की विशेषताएं हो सकती हैं? यदि हाँ, तो ऐसा कैसे करें
viper

2
यदि आप चीजों को बहुत वेनिला करने की योजना बना रहे हैं तो मैं सहमत होना चाहूंगा। मैंने जितनी बार बूट पर जाने का प्रयास किया है, उससे सिरदर्द होता है और मुझे स्क्रीन पर चिल्लाता है, क्योंकि बूट में बहुत स्मार्ट होने की कोशिश की जाती है कि मेरे पास क्या निर्भरताएं हैं और अंत में चीजों को चालू करने के लिए चीजों को चालू करने के लिए अधिक करने की आवश्यकता होती है। एक बूट रहित परियोजना का उपयोग करना। बुरे सपने को खत्म करने वाली कुछ चीजें LDAP के साथ काम करने की कोशिश कर रही हैं, जहां एक db कैश की जरूरत होती है, या एक से अधिक DataSource कॉन्फ़िगर करने से बूट हो जाता है, मेरे बिना JdbcTemplate और हाइबरनेट इंस्टेंसेस बनाने की कोशिश कर रहा है, और यहां तक ​​कि h3 डेटाबेस को खुद से शुरू कर रहा है।
ब्रेट रायन

1
संपत्ति विन्यास भी कुछ है जिसे मैंने नियंत्रित करने के लिए काम नहीं किया है। बूटलेस प्रोजेक्ट्स में मैं एक AppConfig क्लास बनाऊंगा, जिसने अपने एप्स प्रॉपर्टीज फाइल में प्रॉपर्टीज को सपोर्ट करने के लिए ओवरलोड किया है, जिसे मैं JSP और स्पेल में उपयोग कर सकता हूं, लेकिन यह पता नहीं लगा सकता कि बूट के साथ भी ऐसा कैसे किया जाए।
ब्रेट रायन

1
क्या यह उत्तर अभी भी मान्य है (छह महीने बाद) मैं इसे देख रहा हूं, और मुझे अभी भी समझ में नहीं आया कि लोग अभी भी स्प्रिंग का उपयोग क्यों करेंगे, जब उनके पास भयानक स्प्रिंग बूट होगा? मेरा मतलब है कि मुझे स्प्रिंग बूट बहुत पसंद है, बुद्धिमान सॉफ्टवेयर का विचार जो स्वयं को कॉन्फ़िगर करता है, मेरे लिए बहुत बढ़िया है लेकिन मैं बहुत उलझन में हूं! फिर से लोग स्प्रिंग का उपयोग क्यों करेंगे, जब उनके पास भयानक स्प्रिंग बूट होगा?
अहमद हज्जार

1
@ अहमद हज्जार, एक नए प्रोजेक्ट के लिए मैं स्प्रिंग बूट के साथ निश्चित रूप से जाऊंगा। वर्तमान में यह पूरी तरह से परिपक्व उपकरण है। लेकिन ध्यान रखें कि लोगों को अभी भी सादे वसंत परियोजनाओं को बनाए रखने की आवश्यकता है, उनमें से कुछ सीधे बूट में स्थानांतरित करने के लिए आगे हो सकते हैं और अन्य शायद इतने बड़े हैं कि प्रवासन प्रक्रिया को एक दर्द बना देगा।
Xtreme बाइकर

39

स्प्रिंग बूट स्प्रिंग MVC का उपयोग करता है! जब आप स्प्रिंग-बूट-स्टार्टर-वेब जार आयात करते हैं, तो यह केवल स्वतःनिर्धारित और उपयोग करने के लिए तैयार है। तो आप मूल रूप से स्प्रिंग बूट का उपयोग करने के बारे में बात कर रहे हैं या मैन्युअल रूप से अपने स्प्रिंग एप्लिकेशन को सेट करें ...


4
Yep _ + 1, स्प्रिंग बूट सिर्फ
ऑटोकैफिगेशन

@Plain_Dude_Sleeping_Alone मैं समझता हूं कि स्प्रिंग MVC एक रूपरेखा है। आप कहते हैं कि स्प्रिंग बूट सिर्फ एक ऑटोकैफिग टूल है, क्या इसे एक फ्रेमवर्क भी माना जा सकता है?
जेसी

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

24

आप स्प्रिंग बूट के लिए निश्चित रूप से जा सकते हैं। हमने एंटरप्राइज़ एप्लिकेशन के निर्माण के लिए स्प्रिंग बूट का उपयोग करना शुरू कर दिया है। इसके बहुत सारे फायदे हैं, कुछ नीचे सूचीबद्ध हैं:

  1. आपका प्रोजेक्ट कॉन्फ़िगरेशन बहुत सरल होगा। XML फ़ाइल को बनाए रखने की आवश्यकता नहीं है, आपको केवल यह जानना होगा कि आप कितनी कुशलता से application.properties फ़ाइल का उपयोग कर सकते हैं ।

  2. उदाहरण के लिए बहुत से डिफ़ॉल्ट कार्यान्वयन देता है, उदाहरण के लिए यदि आपको ईमेल भेजने की आवश्यकता है, तो यह डिफ़ॉल्ट कार्यान्वयन प्रदान करता है JavaMailSender

  3. स्प्रिंग हाइबरनेट और जेपीए एकीकरण बहुत सरल होगा।

जैसे यह कई हैं, आप अपनी आवश्यकताओं के आधार पर पता लगा सकते हैं।


आपके स्पष्टीकरण के लिए बहुत बहुत धन्यवाद
डिएगो

स्प्रिंग बूट को हमेशा पसंद किया जाता है क्योंकि आपको वर्बोज़ एक्सएमएल से निपटने की ज़रूरत नहीं है और वे सूक्ष्म सेवाओं के आर्किटेक्चर का लाभ उठाते हैं
जॉर्जटॉर

10

आप स्प्रिंग बूट के साथ स्प्रिंग एमवीसी का उपयोग कर सकते हैं जैसा कि @kryger ने कहा, वे उनके बीच गैर-अनन्य हैं, और कॉन्फ़िगरेशन आसान होगा, साथ ही मैं आपको http://www.thymeleaf.org/ का उपयोग करने की सलाह देता हूं, जो टेम्पलेट फ्रेमवर्क है। उस के साथ काम करना JSP के साथ काम करने जैसा है लेकिन thymeleaf HTML के साथ मूल रूप से एकीकृत होता है, इसलिए आपका कोड बहुत साफ दिखेगा और आप बहुत सारी उपयोगी सुविधाएँ जोड़ सकते हैं।


8

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

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

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

स्प्रिंग बूट आपकी स्प्रिंग निर्भरता को सरल करता है, कोई अधिक संस्करण टकराव नहीं, एक कमांड लाइन से बिना किसी एप्लिकेशन कंटेनर के सीधे चलाया जा सकता है, कम कोड के साथ अधिक निर्माण करें - XML ​​की कोई आवश्यकता नहीं, web.xml, ऑटो-कॉन्फ़िगरेशन, चलाने के लिए उपयोगी उपकरण भी नहीं उत्पादन में, डेटाबेस इनिशियलाइज़ेशन, वातावरण विशिष्ट कॉन्फिग फाइल, मेट्रिक्स एकत्रित करना।

स्प्रिंग बूट की मूल बातें यहां पाई जा सकती हैं


जवाब के लिए धन्यवाद। वसंत बूट के बारे में समझने के लिए यह बहुत मददगार था। एक बात मैं उलझन में हूं, अगर मुझे वसंत संस्करण को बदलना होगा जो मैं उपयोग कर रहा हूं, तो मैं वसंत बूट के साथ कैसे करूंगा? मैं कहीं भी नहीं देख सकता कि स्प्रिंग संस्करण कहाँ परिभाषित किया गया है।
वाइपर

अपनी परियोजना में मावेन का उपयोग नहीं किया? @ सांपेर
एर्गिंडूरन

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