Dependency Injection & IoC Explained | Loose Coupling in Spring | Spring Boot Full Course #4 — Transcript
Full transcript
- 0:00हां जी तो करें स्टार्ट। वेलकम बैक कोडर
- 0:03आर्मी हमारी स्प्रिंग फ्रेमवर्क की सीरीज
- 0:05में और आज हमारा टॉपिक बहुत ही
- 0:07इंटरेस्टिंग होने वाला है क्योंकि हम बात
- 0:08करने वाले हैं डिपेंडेंसी इंजेक्शन की,
- 0:10इन्वर्जन ऑफ कंट्रोल की और बेसिकली इन
- 0:12स्प्रिंग कोर आइडियाज की जो हमारे जावा के
- 0:14कोड को बहुत ही क्लीन और बहुत ही लूजली
- 0:16कपल्ड बनाती हैं। अभी आप सोचो कि हमें
- 0:19स्प्रिंग कोर आइडियाज क्यों चाहिए जो कि
- 0:21है डिपेंडेंसी इंजेक्शन, इन्वर्जन ऑफ़
- 0:22कंट्रोल वगैरह-वगैरह। राइट? हम अभी तक
- 0:25अपनी जावा एप्लीकेशनेशंस बिना स्प्रिंग को
- 0:27यूज़ करके भी बना रहे थे। हम अपने जावा में
- 0:29क्लासेस और ऑब्जेक्ट्स को यूज करके और
- 0:31अपने ऊप्स के प्रिंसिपल को फॉलो करके भी
- 0:32सब कुछ कर लेते थे। ऑलमोस्ट क्लीन कोड हम
- 0:34लिख ही लेते थे। राइट? हमें इन
- 0:36प्रिंसिपल्स की क्यों जरूरत है? और मैं
- 0:37यहां पे स्प्रिंग एमवीसी या फिर स्प्रिंग
- 0:40बूट वेब की बात भी नहीं कर रहा जो हमें
- 0:42वेब एप्लीकेशनेशंस बनाने में हेल्प करती
- 0:43है। मैं बात कर रहा हूं बिल्कुल कोर
- 0:44टेक्नोलॉजीस की जिसकी हेल्प से हम कंसोल
- 0:47एप्लीकेशनेशंस भी बना सकते हैं। तो हमें
- 0:48वो क्यों चाहिए? आज हमें वो देखना पड़ेगा।
- 0:51स्प्रिंग फ्रेमवर्क को समझने से पहले आज
- 0:53हम उसको देखेंगे ताकि हम स्प्रिंग
- 0:54फ्रेमवर्क को और बेटर तरीके से समझ पाएं।
- 0:56राइट? तो चलो फटाफट स्क्रीन पे चलते हैं
- 0:58और स्टार्ट करते हैं। तो फिर सबसे पहले
- 1:01क्लिक करते हैं अपने न्यू प्रोजेक्ट पे और
- 1:02इसका नाम क्या रखें? लेट्स से इसका मैं
- 1:04नाम रखता हूं कोर डेमो। क्योंकि हम यहां
- 1:06पे स्प्रिंग के कोर आइडियाज की बात करने
- 1:08वाले हैं। राइट? पर हम स्प्रिंग फ्रेमवर्क
- 1:10को इस वीडियो में यूज़ नहीं करेंगे। हम अभी
- 1:11सिर्फ प्रॉब्लम्स को डिस्कस करेंगे और उन
- 1:13प्रॉब्लम्स के सॉल्यूशन क्या हो सकते हैं
- 1:15वो सोचेंगे और फिर नेक्स्ट वीडियो में हम
- 1:17इंट्रोड्यूस करेंगे कि स्प्रिंग उसे कैसे
- 1:18सॉल्व करता है। राइट? तो पहले तो हमें
- 1:20प्रॉब्लम समझनी पड़ेगी। तो यहां पे मैंने
- 1:21इसका नाम कोड एमो रखा हुआ है। लोकेशन आप
- 1:23अपने हिसाब से चूज़ कर सकते हो। तो बिल्ड
- 1:24सिस्टम हम ऑब्वियसली मेवन के साथ जाएंगे।
- 1:26यहां पे जेडी के 23 और मैंने ऐड कर दिया
- 1:28सैंपल कोड। अब इसको मैं चेंज कर सकता हूं।
- 1:30तो लेट्स से मैं नाम लिख देता हूं इसका इन
- 1:32डॉट कोडर आर्मी।
- 1:35ठीक है? और आर्टिफेक्ट आईडी मेरा हो गया
- 1:37कोड डेमो। ठीक है? और मैं कर देता हूं
- 1:39अपना प्रोजेक्ट क्रिएट। तो इसको थोड़ा सा
- 1:42टाइम देंगे और मेरा प्रोजेक्ट हो जाएगा
- 1:44बिल्कुल क्रिएट। ठीक है? हमें यहां पे
- 1:46अगेन अपनी pmpexml फाइल यहां पे खाली
- 1:47मिलेगी। हम इसका यूज़ भी नहीं करने वाले
- 1:49इस वीडियो में। ठीक है? कोई हम डिपेंडेंसी
- 1:50ऐड नहीं करने वाले। यहां पे मेरा ग्रुप
- 1:52आईडी ये आर्टिफेक्ट आईडी ये रहा और वर्जन
- 1:541.0 स्नैपशॉट। तो इसके अलावा ऑब्वियसली
- 1:57उसने हमें जनरेट करके दिया है मेन कोड।
- 1:59थोड़ा सा सैंपल कोड डाला हुआ है। इसकी
- 2:00हमें जरूरत नहीं है। हम इसे हटा देते हैं
- 2:02और एक बार देख लेते हैं कि हमारा सब कुछ
- 2:04सही से रन हो रहा है। तो मैं एक बार हेलो
- 2:06प्रिंट करके देख लेता हूं और करते हैं
- 2:07इसको रन। इसको होने देते हैं बिल्ड। और
- 2:10हमारा हेलो स्क्रीन पे प्रिंट हो गया। तो
- 2:11हमारा प्रोजेक्ट बिल्कुल सही चल रहा है।
- 2:13राइट? अब ना हम यहां पे बेसिक जावा के कोड
- 2:15की बात करने वाले हैं और देखेंगे कि ये
- 2:17डिपेंडेंसी इंजेक्शंस, आईओसीस वगैरह
- 2:19एक्चुअली होता क्या है। ठीक है? तो अगर
- 2:20आपको कोई आईडिया नहीं इस कांसेप्ट का कोई
- 2:22दिक्कत नहीं है। आज सब कुछ क्लियर हो
- 2:24जाएगा। अब सबसे पहले मैं क्या करता हूं?
- 2:26जावा की एक फाइल बनाता हूं। तो एक बार
- 2:27देखते हैं हम क्या मिमिक करने वाले हैं।
- 2:29हम लेट्स से एक ऑर्डर सर्विस बनाने वाले
- 2:31हैं। राइट? जहां पे आप ऑर्डर को प्लेस कर
- 2:32सकते हो। और अगर आप एक ऑर्डर को प्लेस
- 2:34करोगे तो आप किसी को नोटिफिकेशन भेज
- 2:36पाओगे। राइट? बहुत सिंपल स्टफ। तो सबसे
- 2:38पहले एक काम करते हैं। हम सबसे पहले एक
- 2:39जावा फाइल बनाते हैं। लेट्स से इसका मैं
- 2:41नाम रखता हूं ऑर्डर सर्विस। ठीक है? अगेन
- 2:43हम यहां पे लॉजिक बहुत सिंपल सा लगाने
- 2:45वाले हैं। कुछ कॉम्प्लिकेशन नहीं क्योंकि
- 2:46मेरे को मेनली आइडियाज को समझना है। हमें
- 2:47कोड को बड़ा नहीं करना। ठीक है? तो सबसे
- 2:49पहले सिंपल ऑर्डर सर्विस हमने एक क्लास
- 2:51बना रखी है। इसमें एक काम करते हैं। एक
- 2:53सिंपल सा मेथड लिखते हैं। पब्लिक वॉइड
- 2:56ऑर्डर। ठीक है? तो आप यहां पे या फिर इसका
- 2:58नाम रखते हैं प्लेस ऑर्डर। तो आप ऑर्डर
- 3:01प्लेस कर सकते हो। और जैसे ही आप इस मेथड
- 3:02को कॉल करोगे लेट्स से हम सिंपली स्क्रीन
- 3:04पे प्रिंट कर देंगे ऑर्डर प्लेस्ड।
- 3:06ऑब्वियसली हम बस ममिक कर रहे हैं। कोई कोई
- 3:08बिज़नेस लॉजिक यहां होता होगा। ठीक है? अभी
- 3:10के लिए हमने सिर्फ स्क्रीन पे प्रिंट कर
- 3:11दिया। और लेट्स से ऑर्डर प्लेस करने के
- 3:13बाद ना हमें बेसिकली यूजर को नोटिफिकेशन
- 3:15भी भेजनी है कि आपका ऑर्डर प्लेस हो गया।
- 3:17राइट? तो उसके लिए हम एक काम करते हैं। एक
- 3:19और क्लास बनाते हैं। लेट्स से ईमेल सर्विस
- 3:22जो यूजर को ईमेल नोटिफिकेशन भेज पाएगी।
- 3:24ठीक है? और लेट्स से इसके अंदर हम एक मेथड
- 3:26रखते हैं सेंड नोटिफिकेशन।
- 3:30नोटिफिकेशन। ठीक है? कुछ इस तरीके से। और
- 3:33अगेन जब भी इस मेथड को कॉल करेंगे, मैं
- 3:35यहां पे एक और लाइन प्रिंट कर दूंगा। ईमेल
- 3:37नोटिफिकेशन
- 3:41सेंट। ठीक है? कुछ इस तरीके से। इसको ठीक
- 3:43कर लेते हैं। ईमेल नोटिफिकेशन सेंट। ठीक
- 3:46है? तो जब भी आप इस मेथड को कॉल करोगे
- 3:48आपके कंसोल पे प्रिंट हो जाएगा। ईमेल
- 3:50नोटिफिकेशन सेंड। हम ऑर्डर सर्विस में
- 3:51चलते हैं। अब ऑर्डर सर्विस में क्या करता
- 3:53हूं? मेरे को ईमेल नोटिफिकेशन को भेजना
- 3:54है। राइट? तो मुझे सेंड नोटिफिकेशन कॉल
- 3:56करना पड़ेगा। तो उसके लिए मैं क्या करता
- 3:57हूं? सबसे पहले ऑब्जेक्ट बनाता हूं अपना
- 3:59ईमेल सर्विस का। लेट्स से अ नोटिफिकेशन
- 4:03इक्वल टू न्यू ईमेल सर्विस। राइट? जैसे हम
- 4:05ऑब्जेक्ट बनाते हैं नॉर्मली। और उसके बाद
- 4:07जैसे ही ऑर्डर प्लेस होगा, मैं क्या कर
- 4:08सकता हूं? इस नोटिफिकेशन का सेंड
- 4:10नोटिफिकेशन कॉल कर सकता हूं। और मुझे पता
- 4:12है कि मेरी नोटिफिकेशन यहां पे सेंड हो
- 4:14जानी चाहिए। ठीक है? तो अभी तक मेरे पास
- 4:16एक ऑर्डर सर्विस क्लास है जिसमें एक प्लेस
- 4:18ऑर्डर मेथड है जो प्लेस जो बस प्रिंट करता
- 4:20है ऑर्डर प्लेस्ड और कॉल कर देता है
- 4:21नोटिफिकेशन की सेंड नोटिफिकेशन और ये है
- 4:23हमारी ईमेल सर्विस जिसका सेंड नोटिफिकेशन
- 4:25जैसे ही कॉल होता है स्क्रीन पे प्रिंट हो
- 4:27जाता होगा ईमेल नोटिफिकेशन सेंट ठीक है
- 4:29चलो अब हमने अपने मेन कोड पे गए ठीक है तो
- 4:33इस हेलो को हटा देते हैं अब इसकी कोई
- 4:34जरूरत नहीं है सबसे पहले हम अगेन अपना
- 4:36ऑब्जेक्ट बनाते हैं ऑर्डर सर्विस का लेट्स
- 4:38से ऑर्डर इक्वल टू न्यू ऑर्डर सर्विस ठीक
- 4:41है और यहां पे हमें बस कॉल करना है ऑर्डर
- 4:44डॉट
- 4:45सॉरी प्लेस ऑर्डर ठीक है और हमारा सारा
- 4:48काम हो जाना चाहिए। एक बार करते हैं कोड
- 4:50को रन। हमारा कोड पहले बिल्ड होगा फिर रन
- 4:52हो जाएगा। तो देखो ऑर्डर प्लेस्ड ईमेल
- 4:54नोटिफिकेशन सेंड। कोई दिक्कत नहीं है।
- 4:56हमारा कोड बिल्कुल सही तरीके से चल रहा
- 4:58है। हमारे पास तीन क्लासेस हैं। ऑर्डर
- 5:00सर्विस, ईमेल सर्विस और हमारी मेन क्लास
- 5:02जो ऑर्डर सर्विस को कॉल करती है। राइट?
- 5:04ओके। अब हम ना यहां पे कुछ एक चीज़ ऑब्ज़र्व
- 5:07करते हैं कि ये जो ऑर्डर सर्विस है, ये
- 5:09ईमेल सर्विस का ऑब्जेक्ट क्रिएट करती है
- 5:11और उसका एक मेथड कॉल करती है। राइट? तो
- 5:13क्या हम ऐसे कह सकते हैं कि ये जो ऑर्डर
- 5:15सर्विस है ना ये ईमेल सर्विस में
- 5:17डिपेंडेंट है। राइट? कैसे? जब तक ये ईमेल
- 5:20सर्विस एग्जिस्ट नहीं करेगी हम प्लेस
- 5:22ऑर्डर मेथड कॉल ही नहीं कर पाएंगे क्योंकि
- 5:23प्लेस ऑर्डर को पहले कुछ काम करना है।
- 5:25लेट्स से कंसोल पे प्रिंट करना है और उसके
- 5:27बाद ईमेल सर्विस के ऑब्जेक्ट से उसका सेंड
- 5:30नोटिफिकेशन मेथड कॉल करना है। राइट? तो जब
- 5:32तक ये लाइन या फिर मैं कह सकता हूं जब तक
- 5:34ईमेल सर्विस एग्ज़िस्ट नहीं करती होगी।
- 5:36ईमेल सर्विस का ऑब्जेक्ट नहीं होगा तब तक
- 5:38मैं अपने ऑर्डर सर्विस को भी रन नहीं कर
- 5:40पाऊंगा। राइट? तो इस केस को मैं क्या कहता
- 5:42हूं कि मेरी जो ऑर्डर सर्विस है ना वो
- 5:44डिपेंडेंट है ईमेल सर्विस पे या फिर ईमेल
- 5:47सर्विस एक डिपेंडेंसी का काम करती है मेरी
- 5:49ऑर्डर सर्विस के अंदर। राइट? अब अगेन ये
- 5:51वो डिपेंडेंसी अलग है जो हमने पॉम फाइल
- 5:53में पढ़ी थी। राइट? उसमें भी हम क्या करते
- 5:54हैं? हमारा अगर जो कोड है वो किसी थर्ड
- 5:56पार्टी लाइब्रेरीज पे डिपेंडेंट होता है।
- 5:58तो हम कहते हैं कि हम डिपेंडेंसीज को ऐड
- 5:59कर रहे हैं। जब हम उनकी जार फाइल्स ऐड
- 6:01करते हैं। राइट? अगर आपने मेवन का लेक्चर
- 6:02नहीं देखा तो आप वो देख सकते हो समझने के
- 6:04लिए। पर बिल्कुल सेम ही तो चीज है कि अभी
- 6:06भी मैं अपनी क्लास में ऑर्डर सर्विस क्लास
- 6:08के अंदर ईमेल सर्विस का एक ऑब्जेक्ट
- 6:11क्रिएट कर रहा हूं और उसको उसका एक मेथड
- 6:13कॉल कर रहा हूं। राइट? तो बेसिकली मेरी
- 6:14ऑर्डर सर्विस डिपेंडेंट है ईमेल सर्विस
- 6:16पे। तो ये मेरे लिए एक डिपेंडेंसी हो गई।
- 6:17बिल्कुल सही। पर यहां पे ना एक प्रॉब्लम
- 6:20है। राइट? प्रॉब्लम है टाइट कपलिंग की। और
- 6:22ये बहुत बड़ी प्रॉब्लम है हमारे जावा कोड
- 6:24की। राइट? इसका स्प्रिंग से कोई लेना देना
- 6:26नहीं है। इसका लेना देना हमारे जावा के
- 6:27कोड के डिज़ाइन से है। हमने अपने जावा के
- 6:29कोड को ना बहुत ओपन नहीं बना रखा। लूजली
- 6:32कपल्ड नहीं बना रखा। प्रॉब्लम समझो पहले
- 6:35कि मैं क्या कर रहा हूं। मेरी ऑर्डर
- 6:37सर्विस इस ईमेल सर्विस का ऑब्जेक्ट बना
- 6:39रही है। जिसको मैं एक लाइन में कह सकता
- 6:40हूं कि वो अपनी खुद की डिपेंडेंसी को भी
- 6:42क्रिएट कर रही है। राइट? इट्स क्रिएटिंग
- 6:44इट्स ओन डिपेंडेंसी। ओके? तो ये टाइटली
- 6:47कपलिंग को कैसे इंट्रोड्यूस कर रहा है?
- 6:48सबसे पहले टाइटली कपल्ड होना होता क्या
- 6:50है? देखो प्रोग्रामिंग में ना हमारे पास
- 6:51दो फिलॉसफीज़ हैं। टाइटली कपल्ड होना
- 6:53प्रोग्राम का या लूजली कपल्ड होना। अब
- 6:55टाइटली कपल्ड होने का मतलब आप ऐसे समझ
- 6:57सकते हो। इमेजिन करो मुझे दिल्ली से
- 6:59चंडीगढ़ जाना है। ठीक है? और मैं आपको
- 7:01बोलूं मुझे दिल्ली से चंडीगढ़ जाना है
- 7:03इतने बजे इस बस में बैठ के और बस का
- 7:05ड्राइवर ये होना चाहिए और वो बस इस कंपनी
- 7:07की होनी चाहिए वगैरह-वगैरह। मैंने इतना
- 7:09कुछ स्पेसिफाई कर दिया। तो मैं क्या हुआ?
- 7:11मैं टाइटली कपल्ड हो गया। राइट? मुझे तो
- 7:13सिर्फ चंडीगढ़ जाना था। तो मेरे को मैटर
- 7:15नहीं करना चाहिए ना मैं कौन सी बस से जा
- 7:16रहा हूं? किस टाइम पे जा रहा हूं। चलो
- 7:18टाइम मैटर कर सकता है। हो सकता है पर कौन
- 7:19सी बस से जा रहा हूं? उसका ड्राइवर कौन
- 7:21है? कंपनी कौन है? वगैरह-वगैरह। है ना? तो
- 7:23ये मैं अपने को लूजली कपल्ड कर दिया
- 7:25क्योंकि मुझे सिर्फ कम्यूट करना था। राइट?
- 7:27अब उसी को प्रोग्रामिंग के टर्म्स में
- 7:28सोचो। अब मेरी ऑर्डर सर्विस को ना एक
- 7:31नोटिफिकेशन भेजनी थी। राइट? तो उसने दो
- 7:33चीजें की। एक तो पहले वो ईमेल सर्विस का
- 7:35ऑब्जेक्ट उसने क्रिएट किया। राइट? अब वो
- 7:37और किसी तरीके की नोटिफिकेशन नहीं भेज
- 7:39पाई। मैंने तो कहा था नोटिफिकेशन भेजो। तो
- 7:41कल को अगर मुझे लेट्स से एसएमएस
- 7:42नोटिफिकेशन भेजनी हो या पॉप अप नोटिफिकेशन
- 7:44भेजनी हो। तो वो करने के लिए मुझे ऑर्डर
- 7:46सर्विस में आके चेंज करना पड़ेगा। है ना?
- 7:48मेरे को यहां पे ईमेल सर्विस को हटा के नई
- 7:50क्लास डालनी पड़ेगी तब मेरा कोड चलेगा।
- 7:52राइट? तो मैंने अपने कोड को ना बहुत
- 7:54टाइटली कपल कर दिया। ओके? और दूसरा रीजन
- 7:56टाइटली कबल होने का है कि ऑर्डर सर्विस ही
- 7:59मेरी ईमेल सर्विस का ऑब्जेक्ट भी क्रिएट
- 8:01कर रही है। तो जिस डिपेंडेंसी पे डिपेंड
- 8:03होती है उसका ऑब्जेक्ट भी खुद ही क्रिएट
- 8:05करती है। राइट? तो ये मल्टीपल काम को
- 8:06संभाल रही है। इस सेकंड वाले पार्ट में हम
- 8:09थोड़ा सा बाद में आते हैं। पर पहले वाले
- 8:10काम को देखते हैं कि हमने क्या किया? इसको
- 8:12ईमेल सर्विस यानी कि कंक्रीट क्लास से
- 8:14टाइटली कपल कर दिया। कंक्रीट क्लास आपको
- 8:16पता ही है क्या होता है? बेसिकली जो क्लास
- 8:18एब्स्ट्रैक्ट नहीं होती जिसमें सारे
- 8:19मेथड्स डिफाइन होते हैं। ठीक है? तो अब
- 8:21हमें पता है कि प्रोग्रामिंग में ना या
- 8:23जावा में जनरली हमें कोड करना चाहिए
- 8:25इंटरफेस के लिए। राइट? हमें इंटरफेस से
- 8:27बात ज्यादा करनी चाहिए रादर दन कंक्रीट
- 8:29क्लासेस। तो मुझे पता है कल को हमारी ईमेल
- 8:31सर्विस की जगह हम यूज़ करना चाहेंगे एसएमएस
- 8:34सर्विस। तो लेट्स से मैं एक नई क्लास बना
- 8:36देता हूं। न्यू जावा क्लास एसएमएस
- 8:39अ सर्विस।
- 8:41ठीक है? और एसएमएस सर्विस और लेट्स से मैं
- 8:43एक और जावा क्लास बना देता हूं। इसका मैं
- 8:45नाम रखता हूं लेट्स से पॉप अप नोटिफिकेशन
- 8:50सर्विस कुछ इस तरीके से सर्विस ठीक है तो
- 8:54हो सकता है कल को मैं ये भेजना चाहूं अब
- 8:56आप सोचो अगर मैं चाहता हूं कि भ जो ऑर्डर
- 8:57सर्विस है ना वो ईमेल की जगह एसएमएस
- 9:00सर्विस भेजें तो पहली बात तो मुझे ऑर्डर
- 9:02सर्विस के अंदर आके इस कोड को चेंज करना
- 9:04पड़ेगा। राइट? जो कि एक ओपन क्लोज
- 9:05प्रिंसिपल को ब्रेक करता है। राइट? अगर
- 9:07आपने सॉलिड प्रिंसिपल्स पढ़े हैं तो आपको
- 9:08पता होगा सॉलिड में एक ओपन क्लोज
- 9:10प्रिंसिपल होता है ओ जो कहता है कि आपको
- 9:12अपनी क्लास में ना चेंज नहीं करना चाहिए।
- 9:14तो चेंज करने का मतलब वो आप उसमें
- 9:15एक्सटेंड कर सकते हो और नई चीजें पर उसको
- 9:17मॉडिफाई नहीं करना चाहिए। राइट? टाइटली
- 9:19कपल्ड डिजाइन नहीं बनाना चाहिए। बेसिकली
- 9:21कहने का मतलब यह है। राइट? तो मैं क्या कर
- 9:23सकता हूं? मैं यूज़ कर सकता हूं जावा में
- 9:24इंटरफेस का। राइट? हमें हमेशा कोड करना
- 9:26चाहिए फॉर इंटरफ़ेसेस। राइट? ताकि हमारा जो
- 9:28डिज़ाइन है वो लूजली कपल हो जाए। ये
- 9:30बिल्कुल गुड कोडिंग डिज़ाइन प्रैक्टिस है।
- 9:32इसका स्प्रिंग से कोई लेना देना नहीं है।
- 9:34पर स्प्रिंग की पूरी आइडियोलॉजी इस पे
- 9:36बेस्ड है जिस पे हम धीरे-धीरे जा रहे हैं।
- 9:37राइट? तो मैं एक काम कर सकता हूं। सबसे
- 9:39पहले ना मैं एक इंटरफ़ेस बनाता हूं। ठीक
- 9:41है? इस बार मैं बनाने वाला हूं एक इंटरफ़ेस
- 9:43और इसका मैं नाम रखता हूं नोटिफिकेशन।
- 9:44नोटिफिकेशन। ठीक है? क्योंकि मुझे पता है
- 9:47चाहे ईमेल सर्विस हो, ऑर्डर सर्विस हो या
- 9:49एसएमएस सर्विस हो। ये सब है तो एक
- 9:51नोटिफिकेशन। इनफैक्ट मैं इसका नाम भी
- 9:53नोटिफिकेशन सर्विस कर लेता हूं। ठीक है?
- 9:55ताकि आसान रहे। तो यहां पे मैंने अपना एक
- 9:56इंटरफ़ेस बना दिया नोटिफिकेशन सर्विस। अब
- 9:59देखो इसको कोई इसकी कोई जरूरत नहीं है। पर
- 10:01मैं यहां पे बहुत सारी जावा क्लासेस हो गई
- 10:02हैं। तो मुझे ना पैकेजेस में ऑर्गेनाइज़ कर
- 10:04देना चाहिए। राइट? तो लेट्स से सबसे पहले
- 10:06मैं एक बनाऊंगा पैकेज। उस पैकेज का नाम
- 10:09होगा नोटिफिकेशन। राइट? तो ये मैं अपने
- 10:11हिसाब से कर सकता हूं और मैं काम करता हूं
- 10:13ईमेल सर्विस को इस पैकेज में डाल देता
- 10:15हूं। नोटिफिकेशन सर्विस को भी इस पैकेज
- 10:17में डाल देता हूं। राइट? ऑर्डर ऑर्डर
- 10:20सर्विस ही रहने देंगे। पॉप अप और एसएमएस
- 10:21को भी इस पैकेज में डाल देते हैं। तो और
- 10:25एसएमएस सर्विस को भी। ठीक है? कुछ इस
- 10:27तरीके से। ठीक है? अब मेरा थोड़ा सा
- 10:30मॉड्यूल क्लीन दिख रहा है। मेरे पास एक
- 10:31मेन फंक्शन है, एक ऑर्डर सर्विस है और
- 10:33नोटिफिकेशन के अंदर मेरे पास ईमेल सर्विस,
- 10:35नोटिफिकेशन सर्विस, पॉप अप और एसएमएस सारे
- 10:36तरह के नोटिफिकेशंस हैं। तो मैंने कहा कि
- 10:38मैंने सबसे पहले बनाया नोटिफिकेशन सर्विस
- 10:40का एक इंटरफ़ेस और इसके अंदर एक सिंपल अपना
- 10:43मेथड रख देते हैं सेंड नोटिफिकेशन कुछ इस
- 10:46तरीके से। ठीक है? और अगेन इसको
- 10:48इंप्लीमेंट कौन करेगा? ये तीनों ईमेल
- 10:50सर्विस भी, पॉप अप को भी और एसएमएस भी। तो
- 10:52मैं ईमेल पे जाता हूं और लिखता हूं
- 10:54इंप्लीमेंट्स इंप्लीमेंट्स किसको?
- 10:57नोटिफिकेशन सर्विस को और मैं कहता हूं अगर
- 10:59ये इंप्लीमेंट कर रहा है तो ये इस मेथड को
- 11:01करेगा ओवराइड और ओवराइड किस तरह कर रहा है
- 11:03ये बस लिख रहा है सेंड नोट ईमेल
- 11:05नोटिफिकेशन सेंड ठीक है सेम तरीके से
- 11:07हमारी जो पॉप अप सर्विस क्लास है वो भी
- 11:09इंप्लीमेंट्स करेगी
- 11:12वो भी इंप्लीमेंट करेगी हमारे नोटिफिकेशन
- 11:15सर्विस के इंटरफेस को और अगेन हम क्या कर
- 11:19सकते हैं और यहां पे और यहां पे हम लिख
- 11:21सकते हैं अपना ओवराइड मेथड सेंड
- 11:23नोटिफिकेशन और यहां पे लिख सकते हैं लेट्स
- 11:25से पॉप अप नोटिफिकेशन सेट कुछ इस तरीके से
- 11:28पॉप अप
- 11:31राइट ठीक है अब और उसी तरीके से मैं करता
- 11:35हूं एसएमएस सर्विस को इंप्लीमेंट
- 11:37इंप्लीमेंट्स अ नोटिफिकेशन सर्विस और अगेन
- 11:41इसको अगर इंप्लीमेंट किया है तो इसको
- 11:42ओवराइट करना पड़ेगा सेंड नोटिफिकेशन को और
- 11:45यहां पे वो लिख देता है एसएमएस नोटिफिकेशन
- 11:47सेंड बहुत बढ़िया अब मेरा डिजाइन बिल्कुल
- 11:49सही हो गया मैंने सबसे पहले लिखा है
- 11:51नोटिफिकेशन सर्विस जो कि एक इंटरफेस है और
- 11:53उसको ईमेल पॉप अप और एसएमएस तीनों सर्विस
- 11:55इंप्लीमेंट करती हैं अपने-अपने तरीके
- 11:56कैसे? क्योंकि हमारा सिंपल एक
- 11:58एब्स्ट्रैक्ट फंक्शन की तरह है। ठीक है?
- 12:00अब हमारा जो डिज़ाइन है वो लूजली कपल होने
- 12:02वाला है। राइट? क्योंकि अब मैं क्या कर
- 12:03सकता हूं? अब मैं अपने कोड में ऑर्डर
- 12:05सर्विस में जाता हूं। ठीक है? और मैं किसी
- 12:07भी तरह की नोटिफिकेशन को डाल सकता हूं। अब
- 12:09मैं यहां पे क्या कर सकता हूं? सीधा
- 12:11नोटिफिकेशन सर्विस लिख सकता हूं।
- 12:13नोटिफिकेशन सर्विस नोटिफिकेशन। और यहां पे
- 12:15मैं जो भी चाहूंगा उसका मेथड कॉल हो
- 12:17जाएगा। अगर यहां पे ईमेल सर्विस लिखा हुआ
- 12:19है और मैं अपने मेन मेथड से क्या करता
- 12:21हूं? ऑर्डर डॉट प्लेस ऑर्डर कॉल करता हूं
- 12:23और रन करता हूं तो लिखा आएगा ऑर्डर
- 12:25प्लेस्ड ईमेल नोटिफिकेशन सेंड अगर मैं
- 12:27ऑर्डर सर्विस में जाके यहां पे लिख देता
- 12:29हूं लेट्स से न्यू एसएमएस सर्विस और अब
- 12:32जाके अपने मेन फंक्शन को रन करता हूं तो
- 12:34इस बार आना चाहिए ऑर्डर प्लेस्ड एसएमएस
- 12:36नोटिफिकेशन सेंट इनफैक्ट सेम काम मैं अपनी
- 12:39जो थर्ड सर्विस है जो कि है मेरी पॉप अप
- 12:41नोटिफिकेशन सर्विस उसके साथ भी कर सकता
- 12:43हूं और इस बार मेरा उसका मेथड रन हो जाएगा
- 12:46व्हिच इज़ पॉप अप नोटिफिकेशन सेंट ये तो
- 12:48सिंपल जावा कोड है जो भी आप यहां पे
- 12:49ऑब्जेक्ट क्रिएट करोगे और इस नोटिफिकेशन
- 12:51ेशन रेफरेंस वेरिएबल से सेंट नोटिफिकेशन
- 12:53कॉल करोगे उस पर्टिकुलर ऑब्जेक्ट का मेथड
- 12:55कॉल हो जाएगा। बिल्कुल सही है ना? तो अभी
- 12:58के लिए यहां पे वापस लिख देते हैं ईमेल
- 12:59सर्विस। तो ईमेल सर्विस लिखा है तो जब मैं
- 13:01नोटिफिकेशन डॉट सेंड नोटिफिकेशन करूंगा तो
- 13:03ऑब्जेक्ट कॉल होना चाहिए किसका? हमारे
- 13:06थ्री इंप्लीमेंटेशन है ना हमारा कॉल होना
- 13:07चाहिए ईमेल सर्विस का। राइट? और प्रिंट हो
- 13:10जाना चाहिए ईमेल नोटिफिकेशन सेंट। बहुत
- 13:12बढ़िया। बिल्कुल सिंपल। कोई दिक्कत नहीं
- 13:14है। हमने ये कोड लिखते आए हैं अभी तक। पर
- 13:16प्रॉब्लम समझो। टाइट कपलिंग तो अब भी यही
- 13:19है। राइट? हां। हां, ठीक है। मैंने यहां
- 13:20पे वेरिएबल टाइप चेंज कर दिया। वो मैंने
- 13:22एक इंटरफ़ेस को कर दिया। पर रियल ऑब्जेक्ट
- 13:24तो कंक्रीटली यहीं बन रहा है। राइट? अब
- 13:26प्रॉब्लम एक बार ध्यान से समझते हैं कि ये
- 13:28डिज़ाइन प्रिंसिपल्स को कैसे ब्रेक करती
- 13:29है। सबसे पहले एक डाउट क्लियर कर लो।
- 13:31ऑब्जेक्ट को क्रिएट करना प्रॉब्लम नहीं
- 13:33है। कहां हम उस ऑब्जेक्ट को क्रिएट कर रहे
- 13:34हैं? वहां वो प्रॉब्लम है। राइट? हम
- 13:36ऑब्जेक्ट को क्रिएट कर रहे हैं ऑर्डर
- 13:38सर्विस के अंदर। पर आप सोचो ऑर्डर सर्विस
- 13:41का काम क्या होना चाहिए? ऑर्डर्स को मैनेज
- 13:43करना। राइट? तो इसके अंदर वही सब मेथड्स
- 13:45होने चाहिए जो प्लेस जो ऑर्डर को प्लेस
- 13:47करने में या फिर ऑर्डर सर्विस को मैनेज
- 13:49करने में हेल्प करें। राइट? तो यहां पे
- 13:50प्लेस ऑर्डर हो सकता है, ऐड एन ऑर्डर हो
- 13:53सकता है। हो और भी कई सारे मेथड्स हो सकते
- 13:55हैं। डिलीट एन ऑर्डर हो सकता है। लेकिन
- 13:57यहां पे मैं नोटिफिकेशन का ऑब्जेक्ट क्यों
- 13:59बना रहा हूं? मैं अपनी ही डिपेंडेंसी को
- 14:02खुद क्रिएट क्यों कर रहा हूं? ये तो मैं
- 14:03बहुत ही टाइटली कपल काम कर रहा हूं। चाहे
- 14:05मैं यहां पे इंटरफेस को यूज़ कर रहा हूं एज
- 14:07अ वेरिएबल टाइप। पर अंदर से तो मैं
- 14:08कंक्रीटली ऑब्जेक्ट ही बना रहा हूं। है
- 14:10ना? तो यहां पे ना अगर हम सॉलिड डिजाइन
- 14:12प्रिंसिपल्स की बात करें तो दो डिजाइन
- 14:13प्रिंसिपल बिल्कुल फेल होते हैं। एक तो है
- 14:16हमारा सिंगल रिस्पांसिबिलिटी प्रिंसिपल एस
- 14:18क्योंकि देखो सिंगल रिस्पांसिबिलिटी
- 14:19प्रिंसिपल क्या कहता है कि एक क्लास की एक
- 14:21ही रिस्पांसिबिलिटी होनी चाहिए चेंज होने
- 14:23के लिए। राइट? पर इसके पास मल्टीपल
- 14:25रिस्पांसिबिलिटीज हैं। ये मल्टीपल चीजें
- 14:26हैंडल कर रहा है। एक तो ये ऑर्डर रिलेटेड
- 14:28मेथड्स को हैंडल करेगा। उसके अलावा ये
- 14:30नोटिफिकेशन के ऑब्जेक्ट को भी क्रिएट कर
- 14:32रहा है। ये फैक्ट्री का काम क्यों कर रहा
- 14:34है? नोटिफिकेशन को क्रिएट करना किसी और का
- 14:36काम होना चाहिए। इसका नहीं। राइट? इसका
- 14:38काम होना चाहिए नोटिफिकेशन को यूज़ करना।
- 14:40हां ये ये कर सकता है कि नोटिफिकेशन डॉट
- 14:42सेंड नोटिफिकेशन कि जैसे ही ऑर्डर प्लेस
- 14:44होता है मैं एक नोटिफिकेशन को सेंड कर
- 14:46देता हूं। पर मैं नोटिफिकेशन को क्रिएट
- 14:48क्यों करूंगा राइट एज एन ऑर्डर सर्विस। तो
- 14:50एक तो ये प्रॉब्लम है। दूसरा ये ओपन क्लोज
- 14:53प्रिंसिपल को भी ब्रेक कर रहा है। अब जब
- 14:54भी मुझे कोई और तरह की नोटिफिकेशन सेंड
- 14:56करनी है। मुझे लिटरली ऑर्डर सर्विस के
- 14:58अंदर आकर के कोड को चेंज करना पड़ता है जो
- 15:00कि मैं नहीं चाहता। है ना? तो अब देखो हम
- 15:03क्या कर सकते हैं? हमें अपने डिजाइन को
- 15:05लूजली कपल्ड बनाना है। ये हमारा मेन
- 15:06एजेंडा है। राइट? तो हमें याद रखना पड़ेगा
- 15:09कि डिपेंडेंसी होना नॉर्मल है। राइट? एक
- 15:11सर्विस दूसरी सर्विस पे डिपेंड कर सकती
- 15:14है। और हमारे कोड में ये हमेशा होता है।
- 15:16राइट? अभी तो आप इमेजिन करो हमारे पास
- 15:18ज्यादा क्लासेस ही नहीं है। एक ही इंटरफेस
- 15:19है जिसके पास तीन इंप्लीमेंटेशन है और एक
- 15:21ऑर्डर सर्विस क्लास है और एक मेन क्लास
- 15:23है। पर एक रियल प्रोजेक्ट में हमारे पास
- 15:25100्स ऑफ जावा फाइल्स होंगी। राइट? और उन
- 15:27100्स ऑफ जावा फाइल्स में वो एक दूसरे पे
- 15:29बहुत ज्यादा डिपेंड करेंगे। इनफैक्ट 100
- 15:31थाउज जावा फाइल्स भी हो जाती है कभी-कभी
- 15:33एक बहुत ही मेजर प्रोजेक्ट में अगेन फिर
- 15:34वो मेजर प्रोजेक्ट बहुत बड़ा हो जाएगा
- 15:36उसको हम माइक्रो सर्विस में ब्रेक करना
- 15:37चाहिए वो अलग टॉपिक है पर जनरली कहने का
- 15:40मतलब ये कि एक बहुत बड़े प्रोजेक्ट को
- 15:42मैनेज करना बहुत मुश्किल हो जाता है
- 15:43क्योंकि डिपेंडेंसीज तो होना बहुत कॉमन है
- 15:45फॉर एग्जांपल ऑर्डर सर्विस नोटिफिकेशन
- 15:47सर्विस पे डिपेंड करेगी राइट क्योंकि उसको
- 15:49नोटिफिकेशन भेजनी है ऐसे ही कोई और सर्विस
- 15:52लेट से यूजर सर्विस किसी और सर्विस पे
- 15:53डिपेंड करती होगी बहुत सारी डिपेंडेंसीज
- 15:55हो सकती है इनफैक्ट डिपेंडेंसी का पूरा
- 15:57ट्री बन सकता है कि सर्विस ए इज़ डिपेंडेंट
- 15:59और सर्विस बी और सर्विस बी डिपेंड करती है
- 16:01सर्विस सी पे। ये होना नॉर्मल है।
- 16:02डिपेंडेंसी से किसी को प्रॉब्लम नहीं है।
- 16:04प्रॉब्लम ये है कि आप डिपेंडेंट तो हो जिस
- 16:07पे उसका ऑब्जेक्ट भी आप खुद ही क्रिएट कर
- 16:08रहे हो। राइट? और दूसरा हमारी ऑर्डर
- 16:11सर्विस एक बिनेस लॉजिक है। राइट? जिसको
- 16:13ऑर्डर्स को ही हैंडल करना चाहिए। और एक
- 16:15ऑब्जेक्ट क्रिएट करना एक बिज़नेस लॉजिक
- 16:17नहीं होता। ये अगेन हमने अपने लो लेवल
- 16:19डिजाइन की प्लेलिस्ट में कवर किया हुआ है
- 16:20कि क्लीन कोडिंग प्रैक्टिस क्या होती है।
- 16:21पर जनरली एक बिज़नेस लॉजिक का काम ऑब्जेक्ट
- 16:24क्रिएट करना नहीं होना चाहिए। ओके? तो हम
- 16:27प्रॉब्लम तो समझ गए। अब इस प्रॉब्लम को
- 16:28सॉल्व कैसे करें? देखो थोड़ा सा दिमाग
- 16:30लगाते हैं। ऑर्डर सर्विस ये कह रहा है कि
- 16:33मैं इस ऑब्जेक्ट को क्रिएट नहीं करना
- 16:34चाहता। तो इस ऑब्जेक्ट क्रिएशन को ना कोई
- 16:36और हैंडल कर लो। मुझे तो बस इस मेथड को
- 16:39कॉल करना है किसी तरह। तो अगर इस मेथड को
- 16:41कॉल करना है तो इसको ये ऑब्जेक्ट क्रिएटेड
- 16:44मिलना चाहिए। राइट? तभी तो वो नोटिफिकेशन
- 16:45डॉट सेट नोटिफिकेशन कर पाएगा। राइट? इसे
- 16:47बना एक ऑब्जेक्ट मिलना चाहिए। राइट? तो
- 16:49बेसिकली मैं ये वाली लाइन नहीं लिखना
- 16:51चाहता। मैं उसको क्रिएट नहीं करना चाहता।
- 16:52मैं बस उसके ऑब्जेक्ट को कॉल करना चाहता
- 16:54हूं। इसका सबसे अच्छा आईडिया क्या है? मैं
- 16:56एक ऑर्डर सर्विस का कंस्ट्रक्टर बना लेता
- 16:58हूं और कंस्ट्रक्टर में मैं एक नोटिफिकेशन
- 17:00का ऑब्जेक्ट एक्सपेक्ट कर लेता हूं। राइट?
- 17:02अभी के लिए ये जो नोटिफिकेशन सर्विस का
- 17:03रेफरेंस वेरिएबल है नोटिफिकेशन ये मेरे
- 17:05लिए क्या कर रहा है? एक इंस्टेंस वेरिएबल
- 17:07की तरह काम कर रहा है। है ना? मेरी क्लास
- 17:08के अंदर एक वेरिएबल है। तो मैं क्या कर
- 17:10सकता हूं? अभी के लिए एक कंस्ट्रक्टर
- 17:11बनाता हूं। लेट्स से पब्लिक ऑर्डर सर्विस
- 17:13और यहां पे मैं एक्सपेक्ट करता हूं कि कोई
- 17:15मुझे नोटिफिकेशन सर्विस इस नोटिफिकेशन का
- 17:18ऑब्जेक्ट सेंड कर देगा और मैं उसको सेट कर
- 17:21दूंगा अपने ऑब्जेक्ट पे। सो दिस डॉट
- 17:22नोटिफिकेशन इज़ नोटिफिकेशन जो भी मेरे को
- 17:25यहां पे रिसीव हुआ है कुछ इस तरीके से और
- 17:28जो भी मुझे यहां पे सेंड करेगा इसको बंद
- 17:30कर लेते हैं। हां और जो भी मुझे यहां पे
- 17:31सेंड करेगा मैं उसका सेंड नोटिफिकेशन कॉल
- 17:34कर लूंगा। ठीक है? ये मेरा सिंपल लॉजिक
- 17:36है। पर अगेन अभी मुझे यहां पे एरर आ रहा
- 17:37है। इसको मैं थोड़ा सा इस साइड को करता
- 17:39हूं। हां अगेन एरर आ रहा है। क्योंकि अभी
- 17:41तक मैं इसमें अभी तक जहां मैं मेन के अंदर
- 17:43अपने ऑर्डर सर्विस को कॉल कर रहा था तो
- 17:46विदाउट कंस्ट्रक्टर कर रहा था। राइट? तो
- 17:47वो एरर आना लाजमी है। पर अभी उसको समझते
- 17:49हैं कि हमने क्या किया। राइट? हमने कहा कि
- 17:51मैंने यहां पे ऑब्जेक्ट क्रिएट किया ही
- 17:53नहीं। ठीक है? मैंने बस कहा कि मुझे इसकी
- 17:55जरूरत है। तो कोई मुझे ये पास कर दो मेरे
- 17:57कंस्ट्रक्टर में। अगर तुमने पास कर दिया
- 17:59तो जब भी मैं प्लेस ऑर्डर करूंगा ना मैं
- 18:01जो भी आपने ऑब्जेक्ट यहां पे पास किया
- 18:02होगा उसका सेंड नोटिफिकेशन कॉल कर दूंगा।
- 18:04ठीक है? जो भी आपने कंस्ट्रक्टर में पास
- 18:06किया होगा। ये तो एक इंस्टेंस वेरिएबल है
- 18:08एक इंटरफेस का। है ना? इसको आप कॉल थोड़ी
- 18:10कर सकते हो डायरेक्टली। आपको एक ऑब्जेक्ट
- 18:11चाहिए होगा कंक्रीट ऑब्जेक्ट और वो पास
- 18:13होगा इसके अंदर। ओके? अब वो पास कौन
- 18:16करेगा? अब ये नहीं कर रहा तो किसी को तो
- 18:18करना पड़ेगा। तो लेट्स से मेन वो काम
- 18:20करेगा। राइट? क्योंकि मेन ही इसको क्रिएट
- 18:21करा था। तो हम सबसे पहले एक काम करते हैं।
- 18:23अब इस बार एक नोटिफिकेशन सर्विस का
- 18:25ऑब्जेक्ट बना लेते हैं। लेट्स से
- 18:27नोटिफिकेशन
- 18:28इसका नाम नोटिफिकेशन रखते हैं इक्वल टू
- 18:30न्यू। अब मैं यहां पे किसी भी तरह की
- 18:32नोटिफिकेशन बना सकता हूं। लेट्स से सबसे
- 18:33पहले मैंने बनाया ईमेल सर्विस। ठीक है? और
- 18:36उस नोटिफिकेशन के ऑब्जेक्ट को मैं यहां
- 18:38इसके कंस्ट्रक्टर के अंदर सेंड कर सकता
- 18:39हूं और सिंपली प्लेस ऑर्डर कॉल कर सकता
- 18:42हूं। अब इंटरेस्टिंगली जैसे ही मैं प्लेस
- 18:44ऑर्डर कॉल करूंगा मेरा ऑर्डर प्लेस्ड ईमेल
- 18:46नोटिफिकेशन सेंड आ जाएगा। अब देखो कितना
- 18:48इंटरेस्टिंग हो गया। अब अगर मुझे ईमेल अब
- 18:51अगर मुझे नोटिफिकेशन टाइप को बदलना है
- 18:53मुझे ईमेल सर्विस की जगह एसएमएस सर्विस
- 18:56एसएमएस नोटिफिकेशन भेजनी है तो मुझे बस
- 18:59यहां पे मेन के अंदर चेंज करना पड़ा और
- 19:01मेरा काम हो गया अब मैं इसको रन करूंगा तो
- 19:03एसएमएस नोटिफिकेशन सेंट राइट तो ना तो
- 19:06मुझे अपने ऑर्डर सर्विस के अंदर कोई चेंज
- 19:07करना पड़ा और अगेन नोटिफिकेशन को तो मेरे
- 19:09को छेड़ना ही नहीं पड़ा क्योंकि वो तो
- 19:10अपना इंटरफेस के साथ बना हुआ है। है ना?
- 19:12जिसमें मेरा एक इंटरफेस है और उसकी तीन
- 19:14इंप्लीमेंटेशंस हैं। ऑर्डर सर्विस बस क्या
- 19:16कहता है? उसको यूज़ करता है और कंस्ट्रक्टर
- 19:18से उस वैल्यू को ले लेता है। राइट? तो
- 19:20बेसिकली मेरा ओपन क्लोज प्रिंसिपल फॉलो हो
- 19:21गया। अब मुझे इस क्लास को छेड़ना नहीं
- 19:23पड़ता। है ना? नई तरह की नोटिफिकेशन को
- 19:25स्विच करने के लिए। दूसरा सिंगल
- 19:27रिस्पांसिबिलिटी भी ट्रू हो गया। क्योंकि
- 19:28अब इसकी एक ही रिस्पांसिबिलिटी है जो कि
- 19:30है ऑर्डर्स को हैंडल करना। ये नोटिफिकेशन
- 19:32को हैंडल नहीं करता। इसका बस मेथड कॉल
- 19:34करता है। बेसिकली डेलीगेट करता है अपना
- 19:36काम किसी और पे। राइट? खुद नोटिफिकेशन को
- 19:38क्रिएट नहीं करता। और हां अगर हम अपने मेन
- 19:40मेथड में जाएंगे तो मेन मेथड में हम क्या
- 19:42कर रहे हैं? हम सीधा इसका ऑब्जेक्ट बना
- 19:43सकते हैं एसएमएस का या नोट या ईमेल का या
- 19:46फिर अपने पॉप अप नोटिफिकेशन का। पॉप अप
- 19:49नोटिफिकेशन सर्विस कुछ इस तरीके से और उसे
- 19:52रन कर सकते हैं और हमारा उस तरीके की
- 19:54नोटिफिकेशन सेंड हो जाएगी। कोई दिक्कत
- 19:55नहीं है। अब यहां पे ना एक और इंटरेस्टिंग
- 19:57चीज ये हो गई है। अब क्योंकि ऑर्डर सर्विस
- 19:59खुद से नोटिफिकेशन का ऑब्जेक्ट क्रिएट
- 20:01नहीं कर रही। ऑर्डर सर्विस को ये पता होने
- 20:03की भी जरूरत नहीं है कि किस तरह की
- 20:05नोटिफिकेशन इसे भेजी जाती है। ये जो भी आप
- 20:08इसे भेजोगे उसका सेंड नोटिफिकेशन कॉल कर
- 20:10देगा। राइट? क्योंकि ये एक्सपेक्ट क्या कर
- 20:11रहा है? ये एक नोटिफिकेशन एक्सपेक्ट कर
- 20:13रहा है। नोटिफिकेशन सर्विस और नोटिफिकेशन
- 20:15कोई भी हो सकती है। एसएमएस भी एक
- 20:16नोटिफिकेशन है ये वाली है ना ईमेल भी एक
- 20:19नोटिफिकेशन है। पॉपअप भी एक नोटिफिकेशन
- 20:21है। ऑर्डर सर्विस को उससे मतलब ही नहीं है
- 20:23कि कौन सी आप कंक्रीट नोटिफिकेशन यूज़ करते
- 20:25हो। इसे बस एक मतलब है। आप मुझे किसी तरह
- 20:28की नोटिफिकेशन दो और मैं उसका सेंड
- 20:30नोटिफिकेशन कॉल कर दूं। इसका काम खत्म।
- 20:32इसको एक्चुअली मतलब नहीं है नोटिफिकेशन
- 20:34से। इसको बस मतलब है अपने लॉजिक से कि ये
- 20:36खुद क्या कर रहा है। राइट? तो बेसिकली ना
- 20:39अब इसकी जो डिपेंडेंसी है वो इसको बाहर से
- 20:41मिल रही है। राइट? पहले ही जो इसकी
- 20:43डिपेंडेंसी थी जो कि नोटिफिकेशन सर्विस है
- 20:45इसका ऑब्जेक्ट ये खुद क्रिएट कर रहा था।
- 20:46इट वाज़ क्रिएटिंग इट्स ओन डिपेंडेंसी। अब
- 20:48इसको ये जो डिपेंडेंसी है नोटिफिकेशन की
- 20:51इसको मेन प्रोग्राम से मिल रही है। मेन
- 20:52डॉट जावा से मिल रही है। राइट? अब इसको
- 20:55प्रोग्रामिंग टर्मिनोलॉजी में हम कहते हैं
- 20:56डिपेंडेंसी इंजेक्शन। क्योंकि देखो इसकी
- 20:59डिपेंडेंसी थी नोटिफिकेशन सर्विस। पहले ये
- 21:01खुद अपनी डिपेंडेंसी क्रिएट कर रहा था और
- 21:03उसको यूज़ करता था। पर मैंने कहा ये
- 21:05जिम्मेदारी इससे छीन लेते हैं क्योंकि ये
- 21:06जिम्मेदारी इसकी होनी ही नहीं चाहिए। इसकी
- 21:08जिम्मेदारी ऑर्डर को संभालने की होनी
- 21:10चाहिए। तो मैंने क्या किया? इससे ये
- 21:11जिम्मेदारी ले ली। इसकी जो डिपेंडेंसी है
- 21:13वो मैंने कहा कि तू क्रिएट मत कर। मैं
- 21:16कहीं और से वो डिपेंडेंसी तेरे में
- 21:18इंजेक्ट करूंगा। तो मेरा मेन मेथड वो
- 21:20डिपेंडेंसी जो कि है एक तरह की
- 21:22नोटिफिकेशन। देखो हमने पहले इसने एक
- 21:23नोटिफिकेशन बनाई इक्वल टू न्यू पॉप अप
- 21:25नोटिफिकेशन। और फिर उस टाइप की जो
- 21:27डिपेंडेंसी है वो इसको कंस्ट्रक्टर में
- 21:29सेंड कर दिया। तो जैसे ही कंस्ट्रक्टर में
- 21:31सेंड किया इसने अपने ऑब्जेक्ट के अंदर
- 21:33इसने अपने इंस्टेंस वेरिएबल के अंदर उसको
- 21:35ले लिया और उसका सेंड नोटिफिकेशन कॉल कर
- 21:38दिया जब भी प्लेस ऑर्डर कॉल होता है
- 21:39बेसिकली तब राइट तो यहां पे हमने क्या
- 21:41किया डिपेंडेंसी को इंजेक्ट किया फ्रॉम
- 21:43मेन टू आवर ऑर्डर सर्विस राइट इसी को
- 21:45डिपेंडेंसी इंजेक्शन कहते हैं कोई
- 21:47कॉम्प्लिकेटेड टर्म नहीं है सिंपल सा मतलब
- 21:49है कि जो भी डिपेंडेंसी है जिस पे आपका
- 21:51कोड डिपेंड करता है आपकी क्लास डिपेंड
- 21:53करती है वो उसको खुद से क्रिएट मत करने दो
- 21:55वो बाहर से प्रोवाइड कर दो राइट अब वो
- 21:57बाहर से मतलब कहां से कहीं से भी अभी के
- 21:59लिए हमने यहां पे मेन मेन डॉट जावा से
- 22:00प्रोवाइड कर दिया क्योंकि हम चाहते हैं
- 22:02हमारी बाकी सारी क्लास इंडिपेंडेंट रहे।
- 22:04मेन हमारा एक ड्राइवर की तरह काम करे कि
- 22:05वो सब कुछ ड्राइव करेगा। वो सब कुछ मैनेज
- 22:08करेगा। है ना? अब अगर हम इसके बेनिफिट्स
- 22:10की बात करें अब सबसे बड़ा बेनिफिट तो यही
- 22:12है। ऑब्वियसली हमारा ऑर्डर सर्विस
- 22:13इंडिपेंडेंट हो गया। है ना? इसको अब अगर
- 22:16मुझे अपनी नोटिफिकेशन को चेंज करना है तो
- 22:17ऑर्डर सर्विस के अंदर चेंज करने की जरूरत
- 22:19नहीं है। राइट? इससे भी बड़ा एक बेनिफिट
- 22:21बताऊं। हम अपने कोड को अब बेटर यूनिट
- 22:23टेस्ट कर सकते हैं। अगेन अभी तक हमने
- 22:25यूनिट टेस्टिंग नहीं पढ़ी है। कैसे होती
- 22:27है? पर आप मान लो यूनिट टेस्टिंग का मतलब
- 22:28होता है आप एक मान लो पर्टिकुलर फाइल को
- 22:30टेस्ट करना चाहते हो एक पर्टिकुलर क्लास
- 22:32को तो मुझे सिर्फ ऑर्डर सर्विस को टेस्ट
- 22:34करना है पर अगर मैं अपने पुराने कोड में
- 22:36जाता जहां पे मैं लिटरली यहीं पे ऑब्जेक्ट
- 22:38बना रहा था तो एक्चुअली यहां पे लिखा हुआ
- 22:39था लेट्स से न्यू ईमेल सर्विस कुछ इस
- 22:41तरीके से लिखा हुआ था और मैं यहां पे इसकी
- 22:43वैल्यू कंस्ट्रक्टर से ले भी नहीं रहा था।
- 22:45उस केस में क्या होता है कि अगर मुझे
- 22:47ऑर्डर सर्विस को टेस्ट करना है और आपको
- 22:48पता है हम टेस्ट यूनिट टेस्ट केसेस कहां
- 22:50लिखते हैं? अपने टेस्ट के अंदर जावा के
- 22:52अंदर सेम फोल्डर स्ट्रक्चर फॉलो करते हैं।
- 22:54और जैसे ही यहां पे हमारी ऑर्डर सर्विस
- 22:56यहां बनी हुई है। यहां पे भी हम अपनी
- 22:57ऑर्डर सर्विस टेस्ट क्लास बनाते हैं और
- 22:59उसके अंदर टेस्ट केसेस लिखते हैं। राइट?
- 23:00अगेन ये हमने अपने मेवन के लेक्चर में
- 23:02डिस्कस किया हुआ है। पर अगर यहां पे हम
- 23:04सोचें कि अगर हमें इसके टेस्ट केसेस लिखने
- 23:06पड़ते तो ऑर्डर सर्विस क्योंकि नोटिफिकेशन
- 23:09सर्विस पे डिपेंड करती है और उसे खुद
- 23:11क्रिएट भी करती है तो हमें खुद ना चाहते
- 23:13हुए भी इस ईमेल सर्विस के साथ काम करना
- 23:16पड़ता। राइट? तो आप सोचो मेरे को टेस्ट
- 23:17करना है ऑर्डर सर्विस को। पर उसको टेस्ट
- 23:19करने के लिए बेसिकली उसकी प्लेस ऑर्डर की
- 23:21फंक्शनैलिटी टेस्ट करने के लिए ना मुझे
- 23:23एक्चुअल नोटिफिकेशन को भेजना पड़ रहा है।
- 23:25क्योंकि ये जो नोटिफिकेशन है ये
- 23:26डायरेक्टली टाइटली कपल्ड है हमारी ईमेल
- 23:28सर्विस के साथ। है ना? तो मैं प्लेस ऑर्डर
- 23:31टेस्टिंग कर रहा हूं। उस टेस्टिंग के लिए
- 23:32भी मेरी जो नोटिफिकेशन है वो सेंड हो जाती
- 23:34है। क्योंकि एक्चुअली मैं ईमेल सर्विस के
- 23:36साथ काम कर रहा हूं। तो ये बहुत ही बेकार
- 23:37टेक्निक है। राइट? अब देखो पर जैसे ही
- 23:39मैंने डिपेंडेंसी इंजेक्शन करी कि बाहर से
- 23:42डिपेंडेंसी मिलेगी तो मेरी ऑर्डर सर्विस
- 23:44अब डिपेंडेंसी क्रिएट नहीं करती। उसको
- 23:46सर्विस बाहर से उसको डिपेंडेंसी बाहर से
- 23:48प्रोवाइड की जाती है। तो अगर मुझे टेस्ट
- 23:50करना है ना मैं अपनी एक टेस्टिंग फाइल बना
- 23:52सकता हूं। लेट्स से अभी मैं इसको इसके
- 23:53अंदर ही बना रहा हूं। तो लेट्स से मैं
- 23:55यहां पे लिख देता हूं फेक ईमेल सर्विस जो
- 23:58क्या करेगा? ईमेल सर्विस को सिर्फ फेक
- 24:00करने की कोशिश करेगा और इसको भी
- 24:01इंप्लीमेंट करा लेता हूं हमारी ईमेल
- 24:03सर्विस को सॉरी अपनी ईमेल नहीं सॉरी
- 24:06नोटिफिकेशन सर्विस को राइट कुछ इस तरीके
- 24:08से और यहां पे अगेन इसको ओवराइड करना
- 24:11पड़ेगा किसको
- 24:14अगेन ये ओवराइड करेगा हमारे पब्लिक
- 24:19हमारे
- 24:21सेंड नोटिफिकेशन नाम के मेथड को
- 24:28सेंड नोटिफिकेशन नाम के मेथड को और इसके
- 24:31अंदर लेट्स से हम लिख सकते हैं लेट्स से
- 24:35डमी
- 24:37ईमेल कॉल ठीक है तो हम एक्चुअली कोई ईमेल
- 24:39कॉल नहीं कर रहे राइट हम क्यों अपने हम
- 24:42क्यों अपना पैसा स्पेंड करेंगे एक्चुअली
- 24:44ईमेल कॉल करने के लिए डमी ईमेल सेंड राइट
- 24:47तो यहां पे हम एक्चुअली कोई ईमेल सेंड
- 24:48नहीं कर रहे तो हमने लिख दिया डमी ईमेल
- 24:50सेंड ये बताने के लिए फेक ईमेल सर्विस बना
- 24:52रहे हैं अपना किसको ऑर्डर सर्विस को टेस्ट
- 24:54करने के लिए क्योंकि अब मैं क्या कर सकता
- 24:56हूं। अगर मैं अपने मेन मेथड में जाऊं मेन
- 24:58मेथड में और यहां पे फेक ईमेल सर्विस का
- 25:00एक ऑब्जेक्ट बना दूं। ठीक है? तो मुझे इस
- 25:02ऑर्डर सर्विस में कुछ चेंज नहीं करना
- 25:04पड़ा। यहां पे बस मैंने ऑब्जेक्ट चेंज
- 25:05किया और मैंने इसको रन किया और यहां पे
- 25:07मेरा ऑर्डर प्लेस्ड डमी ईमेल सेंड आ गया।
- 25:10राइट? तो कहने का मतलब ये अभी तो यहां पे
- 25:12हमने कुछ लिखा ही नहीं है। यहां पे हर जगह
- 25:13हमने सिर्फ प्रिंटिंग कर रखी है। पर आप
- 25:15एक्चुअल प्रोग्राम की बात करो तो प्लेस
- 25:17ऑर्डर में बहुत सारी चीजें होती होंगी।
- 25:19राइट? तो यहां पे कुछ एक्चुअल बिजनेस
- 25:22लॉजिक होता होगा। बिजनेस लॉजिक सेम। राइट?
- 25:25और एक बार वो बिजनेस लॉजिक हो जाएगा, आपका
- 25:27आर्डर प्लेस हो जाएगा तो वो नोटिफिकेशन
- 25:29भेजता होगा। और जो आपकी ईमेल सर्विस है वो
- 25:32भी एक्चुअली यहां पर नोटिफिकेशन भेजती
- 25:34होगी। तो यहां पे एक्चुअल नोटिफिकेशन सेंड
- 25:36होती होगी। राइट? तो मैं नहीं चाहता
- 25:38एक्चुअली नोटिफिकेशन सेंड हो मेरी
- 25:40टेस्टिंग में। तो मैंने यहां पे फेक ईमेल
- 25:41सर्विस बना दी। और फेक ईमेल सर्विस को भी
- 25:43इंप्लीमेंट करवा दिया नोटिफिकेशन सर्विस
- 25:45को ताकि मैं अपने मेन मेथड में इस फेक
- 25:48ईमेल सर्विस का भी ऑब्जेक्ट क्रिएट कर
- 25:49सकूं और उसको नोटिफिकेशन की जगह भेज सकूं।
- 25:52राइट? क्योंकि हमारी ऑर्डर सर्विस तो
- 25:53नोटिफिकेशन सर्विस एक्सपेक्ट करती है।
- 25:55इसको नहीं पता किसी भी तरह की नोटिफिकेशन
- 25:57को भेज दो ये एक्सेप्ट कर लेगी। क्योंकि
- 25:58नोटिफिकेशन सर्विस खुद एक इंटरफेस है। जो
- 26:00भी इसको इंप्लीमेंट करेगा उसको वो
- 26:01एक्सपेक्ट कर सकता है। है ना? एक पेरेंट
- 26:03क्लास का रेफरेंस वेरिएबल चाइल्ड क्लास के
- 26:04ऑब्जेक्ट को कॉल कर सकता है। बेसिक जावा
- 26:06रूल है ना? तो हमारा ये पूरा का पूरा कोड
- 26:08ईजीली रन हो जाएगा। मैं अपने कोड को टेस्ट
- 26:10बेटर कर पाऊंगा। है ना? तो यूनिट टेस्ट
- 26:12केसिंग ईजी हो जाती है। अगर हम डिपेंडेंसी
- 26:14इंजेक्शन करते हैं। पर अब एक बहुतेंट
- 26:17क्वेश्चन हमारे माइंड में आया कि ठीक है।
- 26:18हमने डिपेंडेंसी इंजेक्शन कर दिया। तो मेन
- 26:21ने उस डिपेंडेंसी को इंजेक्ट कर दिया
- 26:22ऑर्डर सर्विस के अंदर। इनफैक्ट यह हम कर
- 26:24सकते थे और भी बहुत सारी क्लासेस के साथ।
- 26:26तो यहां से हमें यह तो समझ आ गया कि हम
- 26:28डिपेंडेंसी इंजेक्ट कर सकते हैं। राइट? और
- 26:30हम सारी डिपेंडेंसी इंजेक्ट कर सकते हैं
- 26:32अपने मेन मेथड के थ्रू। तो बेसिकली अगर हम
- 26:34बहुत सारी सर्विज भी बनाते हैं। अभी के
- 26:35लिए हमारे पास सिर्फ एक नोटिफिकेशन की
- 26:38सारी सर्विज हैं और हमारे पास ऑर्डर
- 26:39सर्विस है। पर आप मान लो यूजर सर्विस है,
- 26:42पेमेंट सर्विस है। बहुत सारी सर्विज अगर
- 26:43हमारे पास हैं। उन सबके डिपेंडेंसी
- 26:45इंजेक्ट हम कर सकते थे अपने मेन के थ्रू।
- 26:47और बाकी सारी सर्विज को अपने आप वो
- 26:49डिपेंडेंसी मिल जाती और वो उनके मेथड्स
- 26:51कॉल कर सकते थे। राइट? जैसे बेसिकली हमारा
- 26:53ऑर्डर सर्विस करता है। पर यहां पे ना एक
- 26:55बहुत जरूरी क्वेश्चन आता है हमारे माइंड
- 26:56में कि अगर हम सारी डिपेंडेंसी मेन के
- 26:58थ्रू इंजेक्ट करेंगे तो मेन तो हमारा बहुत
- 27:01ज्यादा कॉम्प्लिकेटेड बन जाएगा। राइट? तो
- 27:02बेसिकली मेन में बहुत ज्यादा वायरिंग हो
- 27:04जाएगी। वो एक-एक करके सारी डिपेंडेंसीज को
- 27:06वायर कर रहा होगा। है ना? तो हम उसको कैसे
- 27:08इजी करेंगे? अभी तो कम सर्विसेज थी पर
- 27:10बहुत सारी सर्विज हो गई। तो हमारा मेन
- 27:11बहुत कॉम्प्लिकेटेड होता जाएगा। राइट?
- 27:13इसका आंसर हमें स्प्रिंग कोर ला के देता
- 27:15है। अभी हम स्प्रिंग फ्रेमवर्क को यूज़
- 27:17नहीं कर रहे हैं। पर हम मान सकते हैं कि
- 27:18जब हम नेक्स्ट वीडियो से स्प्रिंग को यूज़
- 27:20करेंगे तो वो हमारे लिए वो डिपेंडेंसी को
- 27:22मैनेज करेगा। राइट? उनको वो इंजेक्ट
- 27:24करेगा। हमें मेन में भी कुछ भी करने की
- 27:26जरूरत नहीं लगेगी। आपको पूरा कोड बहुत
- 27:28मैजिकल लगेगा कि वो सब कुछ खुद से कैसे
- 27:29मैनेज करता है। राइट? और यही है स्प्रिंग
- 27:31कोर के बेसिक फंडामेंटल्स। अगेन उसको हम
- 27:34अगले आने वाले वीडियोस में देखेंगे। पर
- 27:36अभी ना हम चलते हैं और अपने डिपेंडेंसी
- 27:37इंजेक्शन को थोड़ा और डेप्थ में समझते
- 27:39हैं। अब डिपेंडेंसी इंजेक्शन की ना एक
- 27:41बहुत ही फेमस लाइन है वो है कि डोंट
- 27:43क्रिएट योर ओन डिपेंडेंसी बट गेट योर
- 27:45डिपेंडेंसी। राइट? आपको खुद की डिपेंडेंसी
- 27:47क्रिएट नहीं करनी। किसी से गेट करनी है।
- 27:49अभी के लिए हम मेन से गेट कर रहे हैं। पर
- 27:50जैसे मैंने आपको बोला कि हम स्प्रिंग में
- 27:52जब जाएंगे स्प्रिंग फ्रेमवर्क हमारे लिए
- 27:54वो काम करेगा। डिपेंडेंसी मैनेज करेगा,
- 27:56इंजेक्ट करेगा, खुद से ऑब्जेक्ट्स क्रिएट
- 27:58करेगा। बहुत कुछ वो खुद करने वाला है।
- 27:59राइट? तो यहां पे बेसिक फंडामेंटल लाइन
- 28:01क्या हो सकती है? अ क्लास शुड अ क्लास शुड
- 28:05आस्क व्हाट इट नीड्स एंड नॉट बिल्ड
- 28:09एवरीथिंग
- 28:10एंड नॉट
- 28:13बिल्ड एवरीथिंग
- 28:15इटसेल्फ
- 28:17इटसेल्फ। तो बेसिकली अगर एक क्लास को कुछ
- 28:20भी चाहिए तो वो आस्क करे किसी से मांग ले
- 28:22रादर देन उसको खुद से बना दे। राइट? तो ये
- 28:24बहुत फेमस लाइन है। हमें इससे समझ आता है
- 28:25कि डिपेंडेंसी इंजेक्शन कितना जरूरी है और
- 28:27क्यों जरूरी है। और इंटरेस्टिंगली ये भी
- 28:29याद रखना कि डिपेंडेंसी इंजेक्शन कोई
- 28:31स्प्रिंग का कांसेप्ट नहीं है। राइट?
- 28:33स्प्रिंग उसको ऑटोमेट करता है। पर
- 28:35डिपेंडेंसी इंजेक्शन इंडिविजुअली एक्सिस्ट
- 28:36कर सकता है। इंडिपेंडेंटली एक्सिस्ट कर
- 28:38सकता है। अभी हमने देखो पूरा का पूरा कोड
- 28:40लिखा विदाउट यूजिंग स्प्रिंग फ्रेमवर्क और
- 28:41हम डिपेंडेंसी को बाहर से इंजेक्ट कर रहे
- 28:43हैं। राइट? अब ना एक बार देखते हैं कि
- 28:45डिपेंडेंसी इंजेक्शन के कुछ टाइप्स हो
- 28:47सकते हैं। तो अभी मोटा-मोटा ना मैं आपको
- 28:49दो टाइप्स के बारे में बता सकता हूं
- 28:50डिपेंडेंसी इंजेक्शन के। तो अगर हम मॉडल
- 28:52सर्विस के अंदर जाएं तो अभी हम देखो अपनी
- 28:54डिपेंडेंसी को कंस्ट्रक्टर के थ्रू
- 28:55इंजेक्ट कर रहे हैं। राइट? तो ये जो
- 28:56नोटिफिकेशन सर्विस है वो एक कंस्ट्रक्टर
- 28:58में एक नोटिफिकेशन वो एक्सपेक्ट कर रहा
- 29:00है। पर हमारे पास एक और तरीका हो सकता है
- 29:02डिपेंडेंसी को इंजेक्ट करने का और वो है
- 29:03सेटर्स के थ्रू। राइट? आपको पता है हम
- 29:05किसी क्लास के गेटर्स एंड सेटर्स बनाते
- 29:07हैं। अभी हमारे क्लास में एक ही इंस्टेंस
- 29:08वेरिएबल है नोटिफिकेशन। हम चाहें तो इसके
- 29:10गेटर सेटर बना सकते हैं। अब मैं चाहूं तो
- 29:12इसे मैन्युअली बनाऊं या फिर मेरे पास
- 29:13इंटेलिजेंट में एक तरीका होता है कि मैं
- 29:15रखूंगा जनरेट। और यहां पे मेरे पास होगा
- 29:17सेट। मैं यहां पे तो गेटर एंड सेटर दोनों
- 29:19भी जनरेट कर सकता हूं। पर अभी के लिए मुझे
- 29:20सिर्फ सेटर चाहिए और मैं सेलेक्ट कर सकता
- 29:22हूं नोटिफिकेशन सर्विस। ओके। तो देखो यहां
- 29:24पे मेरे पास अपने आप सेटर बन के रेडी हो
- 29:26गया। सेट नोटिफिकेशन जो क्या करेगा? एक
- 29:28नोटिफिकेशन सर्विस का ऑब्जेक्ट लेगा और
- 29:30हमारे इस नोटिफिकेशन के वेरिएबल में उसको
- 29:31साइन कर देगा। ठीक है? तो मैं चाहूं तो
- 29:34कंस्ट्रक्टर के थ्रू भी सेट कर सकता हूं।
- 29:35मैं चाहूं तो एक सेटर के थ्रू भी सेट कर
- 29:37सकता हूं। तो अभी मैं कंस्ट्रक्टर के थ्रू
- 29:39सेट नहीं करना चाहता। लेट से मैं इसको कर
- 29:40देता हूं कमेंट। अ या फिर एक काम करते
- 29:42हैं। कमेंट नहीं करते। अपना एक और
- 29:44कंस्ट्रक्टर बना लेते हैं। इसको ओवरलोड कर
- 29:45देते हैं। राइट? इसको हम बना लेते हैं
- 29:47खाली कंस्ट्रक्टर ताकि मैं खाली ऑब्जेक्ट
- 29:48भी क्रिएट कर सकूं। ठीक है? तो मैं इसको
- 29:50एम्प्टी कंस्ट्रक्टर बना दिया। अब मैं
- 29:52चाहूं तो मैं मेन फंक्शन में जा के ऐसे
- 29:54ऑब्जेक्ट क्रिएट ना करके मैं सिंपली
- 29:56ऑब्जेक्ट क्रिएट करूं। सिंपली ऑर्डर
- 29:58सर्विस का ऑब्जेक्ट क्रिएट करूं। लेट्स से
- 29:59ऑर्डर इक्वल टू न्यू ऑर्डर सर्विस और खाली
- 30:02कंस्ट्रक्टर के थ्रू ऐसे। और फिर यूज़ करूं
- 30:05ऑर्डर डॉट सेट नोटिफिकेशन। और यहां पे मैं
- 30:07इस नोटिफिकेशन को सेट कर दूं। अभी के लिए
- 30:10मैंने यहां पे फेक ईमेल लिखा हुआ है।
- 30:11लेट्स से एक रियल ईमेल सर्विस यूज़ कर लेते
- 30:13हैं और मैं इसको रन करूंगा तो मेरा फिर भी
- 30:15मेरा प्रोग्राम तो मेरा प्रोग्राम रन हो
- 30:17जाएगा। ऑर्डर प्लेस्ड ईमेल नोटिफिकेशंस
- 30:19एंड। ठीक है? तो मैंने यहां पे दो टाइप्स
- 30:21की बात करी। एक तो मैं इसको कंस्ट्रक्टर
- 30:22के थ्रू इंजेक्ट कर सकता हूं और दूसरा मैं
- 30:24इसको एक सेटर के थ्रू भी इंजेक्ट कर सकता
- 30:26हूं। राइट? अब हमारे पास ना एक तीसरी तरह
- 30:29का डिपेंडेंसी इंजेक्शन भी होता है जो
- 30:31फील्ड के थ्रू होता है। फील्ड फील्ड
- 30:33इंजेक्शन। राइट? पर इसके बारे में हम बात
- 30:35तब करेंगे जब हम स्प्रिंग फ्रेमवर्क के
- 30:36थ्रू इसको समझेंगे। क्योंकि यहां पे फील्ड
- 30:38इंजेक्शन करना पॉसिबल नहीं है। अगर मैं
- 30:39स्प्रिंग को यूज़ नहीं कर रहा। राइट? तो वो
- 30:41हमें समझ आएगा क्यों ऐसा है जब हम
- 30:43स्प्रिंग को यूज़ करेंगे। अब ना अपने
- 30:45नेक्स्ट टॉपिक की तरफ चलते हैं।
- 30:47डिपेंडेंसी इंजेक्शन के बाद जो कि है
- 30:49आईओसी जिसको हम बोलते हैं इन्वर्जन ऑफ
- 30:52कंट्रोल।
- 30:54अब ये ना कोई अलग टॉपिक नहीं है। ये बहुत
- 30:57ही ज्यादा रिलेटेड है डिपेंडेंसी इंजेक्शन
- 30:59से। अगर आपको ये समझ आ गया तो आईओसी तो
- 31:01कुछ भी नहीं है। राइट? इनफैक्ट कई लोग
- 31:03आईओसी और डिपेंडेंसी इंजेक्शन को
- 31:04इंटरचेंजबली यूज कर लेते हैं। पर अगेन ये
- 31:06दोनों अलग-अलग चीजें मीन करते हैं। पर ये
- 31:08रिलेटेड होते हैं। मैं आपको बताता हूं
- 31:09कैसे। अब इन्वर्जन ऑफ कंट्रोल को समझने से
- 31:11पहले सबसे पहले देखते हैं कंट्रोल क्या
- 31:13होता है। तो देखो अगर हम ध्यान से समझें
- 31:15तो जो हमारा इनिशियल डिज़ाइन था जिसमें
- 31:17ऑर्डर सर्विस डिपेंड तो करता ही था
- 31:19नोटिफिकेशन पे बल्कि उसको खुद क्रिएट भी
- 31:21करता था। राइट? तो हमारे पास थी लेट्स से
- 31:23यहां पे मैं लिखता हूं हमारे पास थी एक
- 31:24ऑर्डर सर्विस। ऑर्डर सर्विस
- 31:29राइट? और क्या होता था? ऑर्डर सर्विस खुद
- 31:31से क्रिएट करता था एक नई डिपेंडेंसी जिसको
- 31:33हम बोलते थे लेट्स से ईमेल सर्विस तो इसको
- 31:36मैं लिख देता हूं लेट्स से ईमेल सर्विस
- 31:39ठीक है तो पहले तो ये हो रहा था तो अगर
- 31:41मैं बोलूंगा ना मेरा कंट्रोल किस
- 31:43डायरेक्शन में फ्लो कर रहा था तो आप
- 31:44देखोगे कि मेरा कंट्रोल ऑर्डर सर्विस से
- 31:46ईमेल सर्विस की तरफ को फ्लो कर रहा था
- 31:48राइट ऑर्डर सर्विस रिस्पांसिबल थी ईमेल
- 31:50सर्विस को क्रिएट करने में ये था मेरा
- 31:52इनिशियल डिज़ाइन ठीक है तो यहां पे लिख
- 31:54सकता हूं कि ये था मेरा इनिश तो इसको मैं
- 31:57थोड़ा सा ज़ूम इन कर सकता हूं तो यहां पे
- 31:58मैं लिख सकता हूं ये था मेरा इनिशियल
- 32:00डिज़ाइन राइट इनिशियली मैं ऐसा कुछ कर रहा
- 32:02था तो इधर लिख देते हैं क्रिएट्स ऑर्डर
- 32:05सर्विस क्रिएट्स ईमेल सर्विस अब इस ऑर्डर
- 32:08सर्विस को कौन क्रिएट करता था अब
- 32:09ऑब्वियसली ऑर्डर सर्विस को क्रिएट करने का
- 32:11काम था हमारा मेन का तो अगर मैं इसको यहां
- 32:13ले आऊं लेट्स से ये मेरा ऑर्डर सर्विस हो
- 32:15गया अब ऑर्डर सर्विस को कौन क्रिएट करेगा
- 32:17हमारी मेन सर्विस तो यहां पे मैं लिखता
- 32:19हूं लेट से मेन मेन सर्विस नहीं मेरा मेन
- 32:21मेथड तो मैं इसको लिख देता हूं लेट से मेन
- 32:23अ मेन क्लास आप मान सकते हो ठीक है तो यह
- 32:26मेरा क्रिएट करेगा हमारी ऑर्डर सर्विस को
- 32:28और यह हमारा एंटायर फ्लो राइट? तो सबसे
- 32:30पहले मैं क्या कह सकता हूं? हमारे मेन ने
- 32:31ऑर्डर सर्विस क्रिएट किया और फिर ऑर्डर
- 32:33सर्विस ने ईमेल सर्विस को क्रिएट किया। तो
- 32:34फ्लो कुछ इस डायरेक्शन में था। अब सेकंड
- 32:37फ्लो में क्या हुआ? अब सेकंड फ्लो में
- 32:38आफ्टर डिपेंडेंसी इंजेक्शन। हां जी। तो
- 32:43आफ्टर डिपेंडेंसी इंजेक्शन क्या हुआ? इसके
- 32:45बाद अगर मैं इसी को कॉपी कर लूं तो हमारा
- 32:47डिज़ाइन कुछ ऐसा हो गया कि हमारे मेन मेथड
- 32:50ने ही सबसे पहले ईमेल सर्विस भी क्रिएट की
- 32:52क्योंकि उसको ही डिपेंडेंसी क्रिएट करनी
- 32:53पड़ेगी। अगेन हमारे मेन मेथड ने ऑर्डर
- 32:55सर्विस को भी क्रिएट किया। तो यहां पे मैं
- 32:56लिख देता हूं क्रिएट्स। और फाइनली हमारे
- 32:59मेन मेथड ने इस डिपेंडेंसी को और फाइनली
- 33:03हमारे मेन मेथड ने इस डिपेंडेंसी को पास
- 33:05किया किसको? हमारी ऑर्डर सर्विस के अंदर।
- 33:08राइट? तो यहां पे मैं लिख देता हूं ऑर्डर
- 33:10सर्विस। और इधर लिखते हैं प्रोवाइड्स
- 33:14प्रोवाइड्स ईमेल सर्विस। राइट? तो कुछ ऐसा
- 33:17हुआ होगा। तो डिपेंडेंसी रिजेक्शन के बाद
- 33:19तो क्या हुआ? हमारे मेन ने ही ईमेल सर्विस
- 33:21क्रिएट किया। मेन ने ही ऑर्डर सर्विस
- 33:22क्रिएट किया। और फाइनली मेन ने उस ऑर्डर
- 33:25ईमेल सर्विस के ऑब्जेक्ट को पास किया
- 33:26ऑर्डर सर्विस के पास। राइट? तो आप देखो
- 33:28यहां पर कंट्रोल कैसा है और इससे पहले
- 33:31कंट्रोल कैसा है। तो थोड़ा सा मैं इनको
- 33:32पहले सेपरेट आउट कर देता हूं। अब आप ध्यान
- 33:34से देखो इन दोनों के बीच में कंट्रोल का
- 33:36फ्लो। पहला कंट्रोल दिख रहा है मुझे ऑर्डर
- 33:38सर्विस से ईमेल सर्विस तक आता हुआ। अगला
- 33:40कंट्रोल मुझे उल्टा दिख रहा है। मेन से
- 33:42ऑर्डर सर्विस तक आता हुआ। राइट? तो इसी को
- 33:45हम कहते हैं इन्वर्जन ऑफ कंट्रोल। मेरा
- 33:47कंट्रोल इनवर्ट हो गया। राइट? पहले मेरी
- 33:49ऑर्डर सर्विस अह कहां गई? ऊपर। और हां
- 33:51पहले मेरी ऑर्डर सर्विस क्रिएट करती थी
- 33:54ईमेल सर्विस को तो मेरा कंट्रोल इनसाइड
- 33:56था। राइट? मेरा कंट्रोल ईमेल सर्विस को
- 33:58बनाने का मेरे ऑर्डर सर्विस के पास था।
- 33:59उसके अंदर था। पर जैसे ही मैंने
- 34:02डिपेंडेंसी इंजेक्शन लगाया मेरा जो
- 34:04कंट्रोल है वो इनवर्ट हो गया। अब ऑर्डर
- 34:06सर्विस को अब ऑर्डर सर्विस के पास कंट्रोल
- 34:08नहीं है ईमेल सर्विस का ऑब्जेक्ट बनाने का
- 34:10बल्कि वो उसको बाहर से आउटसाइड से मिल रहा
- 34:13है। राइट? तो पहले जो कंट्रोल इनसाइड था
- 34:15ऑर्डर सर्विस के पास अब वो कंट्रोल
- 34:17आउटसाइड है। ऑर्डर सर्विस को बाहर से मिल
- 34:19रहा है। और इसी को हम बोलते हैं इन्वर्जन
- 34:21ऑफ कंट्रोल कि आपका जो कंट्रोल है वो
- 34:23इनवर्ट हो गया। अब बहुत बढ़िया डाउट जो हो
- 34:26सकता है वो है इन्वर्जन ऑफ कंट्रोल एंड
- 34:27डिपेंडेंसी इन्वर्जन के बीच में रिलेशनशिप
- 34:30क्या है?
- 34:34ठीक है? तो आप सोचो हमारा जो इन्वर्जन ऑफ
- 34:36कंट्रोल है ना वो एक आईडिया है कि हमें
- 34:38ऐसा करना है। ठीक है? या फिर मैं उसे कह
- 34:41सकता हूं और मैं उसे कह सकता हूं हमारा एक
- 34:43प्रिंसिपल है। राइट? लेकिन जो हमारा
- 34:45डिपेंडेंसी इन्वर्जन है वो एप्रोच है या
- 34:48फिर टेक्निक है इसको इंप्लीमेंट करने की
- 34:52टू अचीव आईओसी। राइट? हम आईओसी को एक
- 34:56आईडिया एक प्रिंसिपल की बात कर सकते हैं।
- 34:57बट एक्चुअली इसकी टेक्निक है डिपेंडेंसी
- 35:00इन्वर्जन। तो हम इनके बीच में ये
- 35:02रिलेशनशिप ड्रॉ कर सकते हैं। इन्वर्जन ऑफ
- 35:03कंट्रोल डिपेंडेंसी इंजेक्शन इस तरह
- 35:05रिलेटेड है। आईओसी एक प्रिंसिपल है और
- 35:07डिपेंडेंसी इन्वर्जन उसका तरीका है वो चीज
- 35:09अचीव करने का। अब ये सब तो हमें आ गया
- 35:11समझ। पर इन सबके बीच में हमारा स्प्रिंग
- 35:14फ्रेमवर्क कहां आता है? स्प्रिंग
- 35:15फ्रेमवर्क। तो अगेन अभी तक हमारे जावा के
- 35:19कोड में मेन हमारा काम कर रहा था सारी
- 35:21डिपेंडेंसीज को इंजेक्ट करने का। सब कुछ
- 35:23वायर करने का। है ना? सब कुछ कंट्रोल करने
- 35:25का। या फिर मैं कह सकता हूं मेन हमारा सब
- 35:27कुछ कॉन्फ़िगर कर रहा था। राइट? ऑलदो मेन
- 35:30सब कुछ कॉन्फिगर करे। ये डिजाइन स्टिल
- 35:32बेटर है कि हर क्लास जैसे कि ऑर्डर सर्विस
- 35:34जाकर के खुद इस डिपेंडेंसी को क्रिएट करे।
- 35:36राइट? ये बेकार तरीका था। इससे अच्छा तो
- 35:38मेन ही वायर कर लेगा। आई नो इससे मेन
- 35:40कॉम्प्लिकेट हो जाएगा। और यहीं आता है
- 35:42हमारा स्प्रिंग फ्रेमवर्क। स्प्रिंग
- 35:44फ्रेमवर्क के पास एक आईओसी कंटेनर होता है
- 35:47जिसको हम इन्वर्जन ऑफ कंट्रोल कंटेनर बोल
- 35:50सकते हैं। इन्वर्जन ऑफ कंट्रोल कंटेनर। और
- 35:52इसका काम होता है ये सब करने का जो अभी
- 35:54मेन कर रहा था। राइट? तो अभी हमारा कंटेनर
- 35:57का काम मेन कर रहा था। राइट? कंटेनर है जो
- 35:59सारी चीजें मैनेज कर रहा है। सारी
- 36:00डिपेंडेंसी, सबकी वायरिंग वगैरह-वगैरह।
- 36:02ठीक है? तो जैसे इसने ये डिपेंडेंसी पहले
- 36:03क्रिएट की। फिर इस डिपेंडेंसी को पास किया
- 36:06ऑर्डर सर्विस के अंदर। यानी कि मैं कह
- 36:07सकता हूं उसको वायर किया है ना? ऑर्डर
- 36:09सर्विस को वो डिपेंडेंसी पास ऑन की। अब जो
- 36:12हमारा ये आईओसी कंटेनर है ये वो काम करेगा
- 36:14जो स्प्रिंग फ्रेमवर्क के अंदर आता है। तो
- 36:16बेसिकली हमारा जो आईओसी कंटेनर होने वाला
- 36:18है ना स्प्रिंग फ्रेमवर्क का जो हम पढ़ने
- 36:20वाले हैं। तो वो आपके लिए ऑब्जेक्ट्स को
- 36:22क्रिएट करेगा। तो मैं लिख सकता हूं क्रिएट
- 36:24क्रिएट ऑब्जेक्ट्स।
- 36:28उन ऑब्जेक्ट्स को वह मैनेज करेगा। मैनेज
- 36:30ऑब्जेक्ट्स
- 36:31और तीसरा आपके लिए उन ऑब्जेक्ट्स को
- 36:33कनेक्ट करेगा। तो बेसिकली कनेक्ट्स
- 36:35ऑब्जेक्ट
- 36:37ऑब्जेक्ट टुगेदर। राइट? अब अगेन क्रिएट
- 36:40करने का काम देखो यहां पे पहले हमारा मेन
- 36:42नोटिफिकेशन सर्विस का ऑब्जेक्ट बनाता है।
- 36:44ऑर्डर सर्विस का ऑब्जेक्ट बनाता है। राइट?
- 36:46तो क्रिएशन का काम हमारा मेन कर रहा है।
- 36:47मैं कह रहा हूं बाद में आईओसी कंटेनर
- 36:49करेगा। उनको मैनेज भी अगेन हमारा मेन कर
- 36:51रहा है। मैनेज का मतलब कब वो क्रिएट
- 36:53होंगे, कब वो डिस्ट्रॉय होंगे। तो कहीं ना
- 36:55कहीं वो मेन मेथड ही मेंटेन कर रहा है।
- 36:56राइट? अभी हमारा उसके बाद आईओसी कंटेनर
- 36:58मेंटेन करेगा। लास्ट हमारा कंटेन लास्ट
- 37:02अभी हमारा मेन मेथड सारी डिपेंडेंसी को
- 37:04खुद से वायर कर रहा है। राइट? जैसे कि
- 37:06ऑर्डर सर्विस को चाहिए नोटिफिकेशन सर्विस।
- 37:08तो उसने इसके सेटर में पास कर दिया। यानी
- 37:11कि डिपेंडेंसी को वायर करने का काम।
- 37:12रिलेशनशिप को बिठाने का काम कर रहा है।
- 37:14बाद में हमारा आईओसी कंटेनर ही वो काम
- 37:16करेगा। उन ऑब्जेक्ट्स को आपस में कनेक्ट
- 37:18करने का काम। राइट? ठीक है? तो ये है एक
- 37:21इंट्रोडक्शन कि स्प्रिंग क्या करने वाला
- 37:22है? आपको बहुत मजा आएगा। इनफैक्ट जब हम
- 37:25स्प्रिंग का कोड लिखेंगे ना तो आप ये न्यू
- 37:26कीवर्ड बहुत ही कम देखोगे। ऑलमोस्ट
- 37:29नेगलिजिबल। राइट? हम चाहेंगे कि हमारी
- 37:31ज्यादातर जो ऑब्जेक्ट्स हैं वो सब कुछ
- 37:33स्प्रिंग कंटेनर मैनेज करे। स्प्रिंग
- 37:34आईओसी कंटेनर ही मैनेज करें। राइट? तो
- 37:36स्प्रिंग कोई मैजिक नहीं है। हम देखेंगे
- 37:38उसके अंदर वो कैसे काम करता है। कैसे वो
- 37:40सारे ऑब्जेक्ट्स को क्रिएट करता है। खुद
- 37:42से रिलेशनशिप्स को मेंटेन करता है। यानी
- 37:44कि हमें अपने कोड में 90% नजर आएंगे। खुद
- 37:46से ऑब्जेक्ट को क्रिएट करने की जरूरत नहीं
- 37:47पड़ेगी। हम रिलेशनशिप्स को भी खुद से
- 37:49मैनेज नहीं करेंगे। वो भी हमारा स्प्रिंग
- 37:51फ्रेमवर्क हमें करके दे देगा। वो सब हम
- 37:52धीरे-धीरे देखेंगे। पर एक इंटरेस्टिंग चीज
- 37:55जब हम बात करते हैं ऑब्जेक्ट्स की तो ये
- 37:57हम बात करते हैं अपने नॉर्मल जावा कोड के
- 38:00अंदर। राइट? कि ये हमारे ऑब्जेक्ट्स होते
- 38:01हैं। पर जब आप आईओसी कंटेनर की बात करोगे
- 38:05तो बेसिकली मुझे लिखना चाहिए स्प्रिंग
- 38:06आईओसी कंटेनर। उसके लिए ऑब्जेक्ट्स का
- 38:10मतलब होता है बींस। वो उनको बींस बुलाता
- 38:11है। राइट? तो अभी हम आगे बींस के बारे में
- 38:13बहुत बात करने वाले हैं। पर आप ऐसे मान लो
- 38:15कि बींस कुछ नहीं होते। वो ऑब्जेक्ट्स ही
- 38:17होते हैं जिनको स्प्रिंग कंटेनर मैनेज
- 38:19करता है। स्प्रिंग आईओसी कंटेनर। राइट? तो
- 38:21आप ऐसा कह सकते हो कि हर बीन एक ऑब्जेक्ट
- 38:23होता है। पर जरूरी नहीं है हर ऑब्जेक्ट
- 38:24बीन हो। वही ऑब्जेक्ट बीन होगा जिसको
- 38:26आईओसी कंटेनर खुद मैनेज करेगा। राइट? तो
- 38:29बेसिकली ये पूरा फ्लो बदलने वाला है। अभी
- 38:32हमारा डिपेंडेंसी इंजेक्शन के बाद मेन
- 38:34ईमेल सर्विस बनाता है। फिर मेन ऑर्डर
- 38:35सर्विस भी बनाता है और फिर मेन ही ऑर्डर
- 38:37सर्विस को ईमेल सर्विस प्रोवाइड करता है।
- 38:40मैं कह रहा हूं हर जगह मेन से रिप्लेस
- 38:41करने वाले हैं किसको? हम रिप्लेस करने
- 38:43वाले हैं अपने आईओसी कंटेनर को। तो इन
- 38:46तीनों डायग्राम्स में यहां पे मेन की जगह
- 38:48आ जाएगा आईओसी कंटेनर। और वही सारे काम
- 38:50करेगा। अब उसे कैसे करेगा आईओसी कंटेनर
- 38:52को? कैसे हम आईओसी कंटेनर से हम कैसे
- 38:55इंटैक्ट करेंगे वो सब जानेंगे आने वाले
- 38:57लेक्चर्स में। पर अभी इस लेक्चर का मेन
- 38:59मोटिव था आपको समझाना डिपेंडेंसी इंजेक्शन
- 39:01क्या होता है? आईओसी कंटेनर क्या होता है?
- 39:03और कैसे ये टर्म्स इंडिपेंडेंट है
- 39:05स्प्रिंग से और इनको आप अपने नॉर्मल जावा
- 39:07कोड में भी यूज़ कर सकते हो। राइट? आई होप
- 39:10आपको मजा आया होगा। कुछ ना कुछ सीखने को
- 39:11जरूर मिला होगा। आपसे मिलते हैं नेक्स्ट
- 39:13वीडियो में। तब तक के लिए थैंक यू सो मच।
About this transcript
This page contains the full transcript of Dependency Injection & IoC Explained | Loose Coupling in Spring | Spring Boot Full Course #4 by Coder Army, generated from the public captions YouTube serves with the video. The transcript has 9,003 words across 1,169 segments, with the original timestamps preserved so you can click any line to jump to that moment in the embedded player.
What you can do with it
Use the transcript to take notes, quote the speaker, build a study guide, generate a summary with ChatGPT or Claude via the YouTube Summary tool, or export it as a timed subtitle file with YouTube to SRT. You can also re-open it in the transcriber to choose a caption track available on the video.
Free YouTube transcript tool
YouTube2Text is a free YouTube transcript generator — no signup, no daily limit. Paste any YouTube link and get the full transcript instantly, with timestamps, click-to-jump, caption language selection, AI prompts for ChatGPT, Claude, and Gemini, and exports to TXT, SRT, VTT, or Markdown.