स्प्रिंग एक जावा फ्रेमवर्क है जो किसी एप्लिकेशन के विभिन्न घटकों को बनाने और प्रबंधित करने के लिए एक कंटेनर का उपयोग करता है। कंटेनर (जिसे अक्सर स्प्रिंग एप्लिकेशन संदर्भ कहा जाता है) डिपेंडेंसी इंजेक्शन (DI) डिज़ाइन पैटर्न का उपयोग करके एप्लिकेशन में विभिन्न घटकों को जोड़ता है। DI आपको आश्रित वर्ग में एक वस्तु का उपयोग करने की अनुमति देता है, बिना आश्रित वर्ग के इसका एक नया उदाहरण बनाए बिना।
इसलिए, प्रत्येक घटक को उन लोगों के नए उदाहरण बनाने की अनुमति देने के बजाय, जिन पर वे भरोसा करते हैं, स्प्रिंग का कंटेनर अपने द्वारा होस्ट किए जाने वाले प्रत्येक घटक का एक उदाहरण बनाता है और बनाए रखता है। यह कंटेनर तब एक घटक के एक उदाहरण को अन्य सभी घटकों में इंजेक्ट करता है जिनकी उसे आवश्यकता होती है।
स्प्रिंग की मुख्य विशेषताओं की खोज
स्प्रिंग फ्रेमवर्क में लगभग 20 सुव्यवस्थित मॉड्यूल हैं जो अनुप्रयोगों को बनाने और प्रबंधित करने की क्षमता में एक अभिन्न भूमिका निभाते हैं। इन मॉड्यूल की प्राथमिक विशेषताओं के आधार पर, आप उन्हें पाँच श्रेणियों में समूहित कर सकते हैं:
- कोर कंटेनर
- डेटा एक्सेस/एकीकरण
- वेब
- पहलू उन्मुख प्रोग्रामिंग और इंस्ट्रुमेंटेशन
- परीक्षा
स्प्रिंग कंटेनर
स्प्रिंग एक एप्लिकेशन के विभिन्न घटकों (जिन्हें इसे बीन्स कहते हैं) को बनाने और प्रबंधित करने के लिए एक कंटेनर का उपयोग करता है। कंटेनर को स्प्रिंग के ApplicationContext इंटरफ़ेस के माध्यम से एक्सेस किया जा सकता है, जो आपको ऑब्जेक्ट्स (या बीन्स) को इंस्टेंट करने, कॉन्फ़िगर करने और इकट्ठा करने की अनुमति देता है। कॉन्फ़िगरेशन मेटाडेटा की सहायता से स्प्रिंग का कंटेनर अपना कार्य कर सकता है।
इस कॉन्फ़िगरेशन मेटाडेटा के कई अलग-अलग रूप हो सकते हैं, लेकिन इसका विशिष्ट रूप XML है। बीन्स के अलावा, स्प्रिंग के कंटेनर में कोर, संदर्भ और अभिव्यक्ति मॉड्यूल भी होते हैं।
स्प्रिंग डेटा एक्सेस/इंटीग्रेशन
स्प्रिंग फ्रेमवर्क के डेटा एक्सेस / इंटीग्रेशन पहलू में कई सबमॉड्यूल होते हैं: JDBC, ORM, OXM, JMS और ट्रांजेक्शन। ये मॉड्यूल आपके एप्लिकेशन द्वारा उपयोग किए जाने वाले किसी भी डेटा को प्रबंधित करने के लिए एक साथ काम करते हैं।
स्प्रिंग वेब
स्प्रिंग एप्लिकेशन की वेब सुविधा आपके एप्लिकेशन के लिए वेब-उन्मुख एकीकरण प्रदान करती है। वेब-उन्मुख एकीकरण के अलावा, स्प्रिंग एक वेब सर्वलेट मॉड्यूल भी प्रदान करता है। स्प्रिंग के लिए वेब सर्वलेट मॉड्यूल जिम्मेदार है मॉडल-व्यू-कंट्रोलर (एमवीसी) कार्यान्वयन.
स्प्रिंग आस्पेक्ट-ओरिएंटेड प्रोग्रामिंग (AOP)
स्प्रिंग का AOP ढांचा इसके प्रमुख घटकों में से एक है। हालांकि AOP फ्रेमवर्क स्प्रिंग के कंटेनर फंक्शन के लिए महत्वपूर्ण नहीं है, लेकिन यह एक सक्षम मिडलवेयर समाधान होने के कारण कंटेनर का पूरक है। एओपी ढांचे की प्रमुख विशेषताओं में से एक यह है कि यह आपके आवेदन के लिए घोषणात्मक उद्यम सेवाएं प्रदान करता है, अर्थात् घोषणा लेनदेन प्रबंधन।
घोषणात्मक लेनदेन प्रबंधन सॉफ्टवेयर विकास के लिए एक वांछनीय दृष्टिकोण है क्योंकि इसका एप्लिकेशन कोड पर न्यूनतम प्रभाव पड़ता है।
स्प्रिंग टेस्ट
आवेदन परीक्षण पर वसंत महत्वपूर्ण महत्व रखता है। इसका परीक्षण मॉड्यूल JUnit या TestNG का उपयोग करके एकीकरण परीक्षण और इकाई परीक्षण का समर्थन करता है।
एक स्प्रिंग एप्लिकेशन बनाना
नए स्प्रिंग एप्लिकेशन के लिए बॉयलरप्लेट बनाने के कई तरीके हैं। विभिन्न दृष्टिकोणों में शामिल हैं:
- स्प्रिंग की आधिकारिक वेबसाइट पर वेब एप्लिकेशन (या स्प्रिंग इनिशियलाइज़र) से।
- मैन्युअल रूप से एक परियोजना निर्देशिका संरचना बनाना और विनिर्देशों का निर्माण करना।
- स्प्रिंग टूल सूट के साथ।
- स्प्रिंग बूट कमांड-लाइन इंटरफ़ेस के साथ कमांड लाइन से।
- ग्रहण आईडीई के साथ।
- IntelliJ आईडिया आईडीई के साथ।
सबसे लोकप्रिय दृष्टिकोण स्प्रिंग इनिशियलाइज़र है:
जैसा कि आप ऊपर की छवि से देख सकते हैं, आपको कई निर्णय लेने होंगे। पहली परियोजना का प्रकार है जिसे आप प्रारंभ करना चाहते हैं। स्प्रिंग तीन विकल्प प्रदान करता है: ग्रूवी के लिए ग्रैडल, कोटलिन के लिए ग्रैडल या मावेन। यह नमूना आवेदन मावेन परियोजना का उपयोग करेगा।
आपके द्वारा चुने जाने वाले अन्य विकल्प भाषा (जावा), स्प्रिंग बूट का वह संस्करण है जिसका आप उपयोग करना चाहते हैं, और प्रोजेक्ट मेटाडेटा। स्प्रिंग के पांच क्षेत्रों में पहले से ही कुछ डमी डेटा हैं जो आपको एक नमूना एप्लिकेशन बनाने में मदद करेंगे। हालाँकि, आपको इन क्षेत्रों को प्रोजेक्ट-विशिष्ट डेटा के साथ अपडेट करने की आवश्यकता होगी, क्योंकि यह मेटाडेटा स्प्रिंग बीन्स और उनके तरीकों सहित आपके स्प्रिंग एप्लिकेशन का वर्णन करेगा।
इसके बाद, आपको उस पैकेजिंग का चयन करना होगा जिसमें आप अपनी फ़ाइलें (जार या वार) रखना चाहते हैं। फिर आप अपने डिवाइस पर मौजूद जावा के संस्करण का चयन कर सकते हैं। आपको जो अंतिम निर्णय लेने की आवश्यकता होगी वह आपके आवेदन के लिए निर्भरताओं का प्रकार है।
स्प्रिंग कई निर्भरताएँ प्रदान करता है जिनका उपयोग आप अपने एप्लिकेशन में गुण जोड़ने के लिए कर सकते हैं। अपने एप्लिकेशन में एक नई निर्भरता जोड़ने के लिए, बस स्प्रिंग इनिशियलाइज़र के दाईं ओर निर्भरताएँ जोड़ें बटन पर क्लिक करें। यह क्रिया आपकी स्क्रीन पर निम्नलिखित ओवरले उत्पन्न करेगी:
इस नमूना आवेदन के लिए, आपको केवल स्प्रिंग वेब की आवश्यकता होगी। यह निर्भरता आपको MVC आर्किटेक्चर का उपयोग करके वेब एप्लिकेशन बनाने की अनुमति देती है। आपके द्वारा अपने आवेदन में उपयोग की जाने वाली सभी निर्भरताओं का चयन करने के बाद, एक क्लिक जनरेट करें। यह आपके लिए प्रोजेक्ट बॉयलरप्लेट डाउनलोड करेगा।
अब आपके पास स्प्रिंग बूट (जो स्प्रिंग के पुस्तकालयों में से एक है) प्रोजेक्ट है। अंतिम चरण परियोजना को अपनी पसंदीदा आईडीई में आयात करना है। आपकी स्प्रिंग परियोजना में निम्नलिखित परियोजना संरचना होगी:
यह एक सामान्य मावेन परियोजना संरचना है, और ऐसी कई महत्वपूर्ण फाइलें हैं जिनसे आपको परिचित होने की आवश्यकता है।
- Pom.xml: इसमें स्प्रिंग एप्लिकेशन कॉन्फ़िगरेशन डेटा शामिल है।
- OnlineShopaholicsApplication.java: यह स्प्रिंग बूट का मुख्य वर्ग है, जो एप्लिकेशन को निष्पादित करता है।
- OnlineShopaholicsApplicationTest.java: यह एक है जूनिट टेस्ट वर्ग जो सुनिश्चित करता है कि स्प्रिंग एप्लिकेशन संदर्भ (या कंटेनर) सही ढंग से लोड हो।
स्प्रिंग एप्लिकेशन चलाना
स्प्रिंग के बूटस्ट्रैप वर्ग, जो इस मामले में ऑनलाइनशॉपहॉलिक्सएप्लीकेशन क्लास है, में निम्नलिखित प्रारंभिक कोड हैं:
पैकेट com.onlineshopaholics;
आयातसंगठन.springframework।गाड़ी की डिक्कीवसंतअनुप्रयोग;
आयातसंगठन.springframework।गाड़ी की डिक्की.autoconfigure.स्प्रिंगबूटएप्लीकेशन;
@SpringBootएप्लिकेशन
जनताकक्षाऑनलाइन शॉपहोलिक्स एप्लीकेशन{
जनतास्थिरखालीपनमुख्य(स्ट्रिंग [] तर्क){
स्प्रिंगएप्लीकेशन.रन (ऑनलाइनशॉपहोलिक्सएप्लीकेशन.कक्षा, तर्क);
}
}
उपरोक्त कोड के सबसे महत्वपूर्ण पहलुओं में से एक है @SpringBootएप्लिकेशन एनोटेशन, जो एक समग्र एनोटेशन है जो आपके एप्लिकेशन को तीन अन्य एनोटेशन की सुविधाओं तक पहुंचने की अनुमति देता है:
- @EnableAutoconfiguration: यह एनोटेशन स्प्रिंग बूट स्वचालित कॉन्फ़िगरेशन को सक्षम करता है। इसका मतलब यह है कि यह स्प्रिंग बूट को किसी भी घटक को कॉन्फ़िगर करने के लिए कहता है जो उसे लगता है कि आपके आवेदन को कार्य करने की आवश्यकता होगी।
- @ComponentScan: यह एनोटेशन आपको घटक स्कैनिंग सक्षम करने की अनुमति देता है। यह सुविधा महत्वपूर्ण है, यह स्प्रिंग को स्वचालित रूप से स्प्रिंग एप्लिकेशन संदर्भ (या कंटेनर) द्वारा उपयोग के लिए अन्य एनोटेट घटकों को खोजने और पंजीकृत करने की अनुमति देती है।
- @SpringBootConfiguration: यह @Configuration एनोटेशन का एक विशेष रूप है, जो आपको स्प्रिंग एप्लिकेशन के संदर्भ में बीन्स (या ऑब्जेक्ट) को पंजीकृत करने की अनुमति देता है।
उपरोक्त कोड का अन्य महत्वपूर्ण पहलू है मुख्य() विधि, यह आपके आवेदन को निष्पादित करता है। जब एप्लिकेशन अब निष्पादित होता है, तो यह बस सर्वर को प्रारंभ करता है। इसलिए, यदि आप एप्लिकेशन में अधिक कार्यक्षमता जोड़ना चाहते हैं, तो आपको कोड अपडेट करना होगा:
पैकेट com.onlineshopaholics;
आयातसंगठन.springframework।गाड़ी की डिक्कीवसंतअनुप्रयोग;
आयातसंगठन.springframework।गाड़ी की डिक्की.autoconfigure.स्प्रिंगबूटएप्लीकेशन;
आयातसंगठन.springframeworkवेब।बाँधना.एनोटेशनगेट मैपिंग;
आयातसंगठन.springframeworkवेब।बाँधना.एनोटेशन.RequestParam;
आयातसंगठन.springframeworkवेब।बाँधना.एनोटेशनरेस्टकंट्रोलर;@SpringBootएप्लिकेशन
@RestController
जनताकक्षाऑनलाइन शॉपहोलिक्स एप्लीकेशन{
जनतास्थिरखालीपनमुख्य(स्ट्रिंग [] तर्क){
स्प्रिंगएप्लीकेशन.रन (ऑनलाइनशॉपहोलिक्सएप्लीकेशन.कक्षा, तर्क);
}
@GetMapping("/ग्राहक")
जनता डोरी स्वागत है (@RequestParam (मान = "नाम", डिफ़ॉल्ट वैल्यू = "ग्राहक") डोरी नाम) {
वापस करनाडोरी।प्रारूप("का स्वागत करते हैं!", नाम);
}
}
स्प्रिंग बूट एप्लिकेशन में अब तीन नए एनोटेशन हैं:
- @RestController: यह एनोटेशन कक्षा को नियंत्रक के रूप में चिह्नित करता है, इसलिए उपरोक्त वर्ग में प्रत्येक विधि (मुख्य() के अलावा) दृश्य के बजाय डोमेन ऑब्जेक्ट वापस कर देगी।
- @GetMapping: यह एनोटेशन HTTP GET अनुरोधों को विशिष्ट हेडर विधियों पर मैप करता है। इसलिए, हर बार जब आप ब्राउज़र में "/ ग्राहक" के लिए एक अनुरोध बनाते हैं, तो वेलकम () विधि एक स्ट्रिंग मान लौटाकर अनुरोध को संभाल लेगी।
- @RequestParam: यह एनोटेशन इंगित करता है कि एक विधि पैरामीटर एक वेब अनुरोध पैरामीटर के लिए बाध्य होना चाहिए।
अपडेट किए गए कोड के साथ आपका स्प्रिंग ऑनलाइन शॉपहोलिक्स एप्लीकेशन अब एक ग्राहक पृष्ठ है जिसे आप अपने ब्राउज़र में देख सकते हैं। एप्लिकेशन को निष्पादित करने से सर्वर शुरू हो जाएगा और कंसोल में आउटपुट उत्पन्न होगा।
आउटपुट में बहुत सी महत्वपूर्ण जानकारी है। यह आपको बताता है कि सर्वर चल रहा है, यह आपको बताता है कि इनिशियलाइज़ेशन प्रक्रिया में कितना समय लगा, और यह बताता है कि एप्लिकेशन किस पोर्ट पर चल रहा है (8080, डिफ़ॉल्ट रूप से)। इसलिए, यदि आप नेविगेट करते हैं http://localhost: 8080/ग्राहक आप अपने ब्राउज़र में निम्न आउटपुट देखेंगे:
अब आप अपना एप्लिकेशन व्यू डिज़ाइन कर सकते हैं
प्रोजेक्ट संरचना में एक अन्य महत्वपूर्ण फ़ाइल जिसे आप देख सकते हैं वह है खाके फ़ोल्डर। आदर्श रूप से, ऑनलाइन शॉपहोलिक्स एप्लीकेशन कक्षा को नियंत्रक के रूप में कार्य करना चाहिए, जो विभिन्न विचारों के अनुरोधों को संभालता है। इसलिए, एक पूर्ण आवेदन में, नियंत्रक वर्ग में वह पाठ नहीं होना चाहिए जो उसके अनुरोध को देखते हुए प्रदर्शित होगा।
इसके बजाय, आपको HTML का उपयोग करके टेम्प्लेट फ़ाइलें बनाने और उन्हें अपने स्प्रिंग एप्लिकेशन के टेम्प्लेट फ़ोल्डर में रखने की आवश्यकता होगी।