YouTube2Text

Dependency Injection & IoC Explained | Loose Coupling in Spring | Spring Boot Full Course #4 — Transcript

by Coder Army · 9,003 words · 1,169 segments · language en · Watch on YouTube

Full transcript

  1. 0:00हां जी तो करें स्टार्ट। वेलकम बैक कोडर
  2. 0:03आर्मी हमारी स्प्रिंग फ्रेमवर्क की सीरीज
  3. 0:05में और आज हमारा टॉपिक बहुत ही
  4. 0:07इंटरेस्टिंग होने वाला है क्योंकि हम बात
  5. 0:08करने वाले हैं डिपेंडेंसी इंजेक्शन की,
  6. 0:10इन्वर्जन ऑफ कंट्रोल की और बेसिकली इन
  7. 0:12स्प्रिंग कोर आइडियाज की जो हमारे जावा के
  8. 0:14कोड को बहुत ही क्लीन और बहुत ही लूजली
  9. 0:16कपल्ड बनाती हैं। अभी आप सोचो कि हमें
  10. 0:19स्प्रिंग कोर आइडियाज क्यों चाहिए जो कि
  11. 0:21है डिपेंडेंसी इंजेक्शन, इन्वर्जन ऑफ़
  12. 0:22कंट्रोल वगैरह-वगैरह। राइट? हम अभी तक
  13. 0:25अपनी जावा एप्लीकेशनेशंस बिना स्प्रिंग को
  14. 0:27यूज़ करके भी बना रहे थे। हम अपने जावा में
  15. 0:29क्लासेस और ऑब्जेक्ट्स को यूज करके और
  16. 0:31अपने ऊप्स के प्रिंसिपल को फॉलो करके भी
  17. 0:32सब कुछ कर लेते थे। ऑलमोस्ट क्लीन कोड हम
  18. 0:34लिख ही लेते थे। राइट? हमें इन
  19. 0:36प्रिंसिपल्स की क्यों जरूरत है? और मैं
  20. 0:37यहां पे स्प्रिंग एमवीसी या फिर स्प्रिंग
  21. 0:40बूट वेब की बात भी नहीं कर रहा जो हमें
  22. 0:42वेब एप्लीकेशनेशंस बनाने में हेल्प करती
  23. 0:43है। मैं बात कर रहा हूं बिल्कुल कोर
  24. 0:44टेक्नोलॉजीस की जिसकी हेल्प से हम कंसोल
  25. 0:47एप्लीकेशनेशंस भी बना सकते हैं। तो हमें
  26. 0:48वो क्यों चाहिए? आज हमें वो देखना पड़ेगा।
  27. 0:51स्प्रिंग फ्रेमवर्क को समझने से पहले आज
  28. 0:53हम उसको देखेंगे ताकि हम स्प्रिंग
  29. 0:54फ्रेमवर्क को और बेटर तरीके से समझ पाएं।
  30. 0:56राइट? तो चलो फटाफट स्क्रीन पे चलते हैं
  31. 0:58और स्टार्ट करते हैं। तो फिर सबसे पहले
  32. 1:01क्लिक करते हैं अपने न्यू प्रोजेक्ट पे और
  33. 1:02इसका नाम क्या रखें? लेट्स से इसका मैं
  34. 1:04नाम रखता हूं कोर डेमो। क्योंकि हम यहां
  35. 1:06पे स्प्रिंग के कोर आइडियाज की बात करने
  36. 1:08वाले हैं। राइट? पर हम स्प्रिंग फ्रेमवर्क
  37. 1:10को इस वीडियो में यूज़ नहीं करेंगे। हम अभी
  38. 1:11सिर्फ प्रॉब्लम्स को डिस्कस करेंगे और उन
  39. 1:13प्रॉब्लम्स के सॉल्यूशन क्या हो सकते हैं
  40. 1:15वो सोचेंगे और फिर नेक्स्ट वीडियो में हम
  41. 1:17इंट्रोड्यूस करेंगे कि स्प्रिंग उसे कैसे
  42. 1:18सॉल्व करता है। राइट? तो पहले तो हमें
  43. 1:20प्रॉब्लम समझनी पड़ेगी। तो यहां पे मैंने
  44. 1:21इसका नाम कोड एमो रखा हुआ है। लोकेशन आप
  45. 1:23अपने हिसाब से चूज़ कर सकते हो। तो बिल्ड
  46. 1:24सिस्टम हम ऑब्वियसली मेवन के साथ जाएंगे।
  47. 1:26यहां पे जेडी के 23 और मैंने ऐड कर दिया
  48. 1:28सैंपल कोड। अब इसको मैं चेंज कर सकता हूं।
  49. 1:30तो लेट्स से मैं नाम लिख देता हूं इसका इन
  50. 1:32डॉट कोडर आर्मी।
  51. 1:35ठीक है? और आर्टिफेक्ट आईडी मेरा हो गया
  52. 1:37कोड डेमो। ठीक है? और मैं कर देता हूं
  53. 1:39अपना प्रोजेक्ट क्रिएट। तो इसको थोड़ा सा
  54. 1:42टाइम देंगे और मेरा प्रोजेक्ट हो जाएगा
  55. 1:44बिल्कुल क्रिएट। ठीक है? हमें यहां पे
  56. 1:46अगेन अपनी pmpexml फाइल यहां पे खाली
  57. 1:47मिलेगी। हम इसका यूज़ भी नहीं करने वाले
  58. 1:49इस वीडियो में। ठीक है? कोई हम डिपेंडेंसी
  59. 1:50ऐड नहीं करने वाले। यहां पे मेरा ग्रुप
  60. 1:52आईडी ये आर्टिफेक्ट आईडी ये रहा और वर्जन
  61. 1:541.0 स्नैपशॉट। तो इसके अलावा ऑब्वियसली
  62. 1:57उसने हमें जनरेट करके दिया है मेन कोड।
  63. 1:59थोड़ा सा सैंपल कोड डाला हुआ है। इसकी
  64. 2:00हमें जरूरत नहीं है। हम इसे हटा देते हैं
  65. 2:02और एक बार देख लेते हैं कि हमारा सब कुछ
  66. 2:04सही से रन हो रहा है। तो मैं एक बार हेलो
  67. 2:06प्रिंट करके देख लेता हूं और करते हैं
  68. 2:07इसको रन। इसको होने देते हैं बिल्ड। और
  69. 2:10हमारा हेलो स्क्रीन पे प्रिंट हो गया। तो
  70. 2:11हमारा प्रोजेक्ट बिल्कुल सही चल रहा है।
  71. 2:13राइट? अब ना हम यहां पे बेसिक जावा के कोड
  72. 2:15की बात करने वाले हैं और देखेंगे कि ये
  73. 2:17डिपेंडेंसी इंजेक्शंस, आईओसीस वगैरह
  74. 2:19एक्चुअली होता क्या है। ठीक है? तो अगर
  75. 2:20आपको कोई आईडिया नहीं इस कांसेप्ट का कोई
  76. 2:22दिक्कत नहीं है। आज सब कुछ क्लियर हो
  77. 2:24जाएगा। अब सबसे पहले मैं क्या करता हूं?
  78. 2:26जावा की एक फाइल बनाता हूं। तो एक बार
  79. 2:27देखते हैं हम क्या मिमिक करने वाले हैं।
  80. 2:29हम लेट्स से एक ऑर्डर सर्विस बनाने वाले
  81. 2:31हैं। राइट? जहां पे आप ऑर्डर को प्लेस कर
  82. 2:32सकते हो। और अगर आप एक ऑर्डर को प्लेस
  83. 2:34करोगे तो आप किसी को नोटिफिकेशन भेज
  84. 2:36पाओगे। राइट? बहुत सिंपल स्टफ। तो सबसे
  85. 2:38पहले एक काम करते हैं। हम सबसे पहले एक
  86. 2:39जावा फाइल बनाते हैं। लेट्स से इसका मैं
  87. 2:41नाम रखता हूं ऑर्डर सर्विस। ठीक है? अगेन
  88. 2:43हम यहां पे लॉजिक बहुत सिंपल सा लगाने
  89. 2:45वाले हैं। कुछ कॉम्प्लिकेशन नहीं क्योंकि
  90. 2:46मेरे को मेनली आइडियाज को समझना है। हमें
  91. 2:47कोड को बड़ा नहीं करना। ठीक है? तो सबसे
  92. 2:49पहले सिंपल ऑर्डर सर्विस हमने एक क्लास
  93. 2:51बना रखी है। इसमें एक काम करते हैं। एक
  94. 2:53सिंपल सा मेथड लिखते हैं। पब्लिक वॉइड
  95. 2:56ऑर्डर। ठीक है? तो आप यहां पे या फिर इसका
  96. 2:58नाम रखते हैं प्लेस ऑर्डर। तो आप ऑर्डर
  97. 3:01प्लेस कर सकते हो। और जैसे ही आप इस मेथड
  98. 3:02को कॉल करोगे लेट्स से हम सिंपली स्क्रीन
  99. 3:04पे प्रिंट कर देंगे ऑर्डर प्लेस्ड।
  100. 3:06ऑब्वियसली हम बस ममिक कर रहे हैं। कोई कोई
  101. 3:08बिज़नेस लॉजिक यहां होता होगा। ठीक है? अभी
  102. 3:10के लिए हमने सिर्फ स्क्रीन पे प्रिंट कर
  103. 3:11दिया। और लेट्स से ऑर्डर प्लेस करने के
  104. 3:13बाद ना हमें बेसिकली यूजर को नोटिफिकेशन
  105. 3:15भी भेजनी है कि आपका ऑर्डर प्लेस हो गया।
  106. 3:17राइट? तो उसके लिए हम एक काम करते हैं। एक
  107. 3:19और क्लास बनाते हैं। लेट्स से ईमेल सर्विस
  108. 3:22जो यूजर को ईमेल नोटिफिकेशन भेज पाएगी।
  109. 3:24ठीक है? और लेट्स से इसके अंदर हम एक मेथड
  110. 3:26रखते हैं सेंड नोटिफिकेशन।
  111. 3:30नोटिफिकेशन। ठीक है? कुछ इस तरीके से। और
  112. 3:33अगेन जब भी इस मेथड को कॉल करेंगे, मैं
  113. 3:35यहां पे एक और लाइन प्रिंट कर दूंगा। ईमेल
  114. 3:37नोटिफिकेशन
  115. 3:41सेंट। ठीक है? कुछ इस तरीके से। इसको ठीक
  116. 3:43कर लेते हैं। ईमेल नोटिफिकेशन सेंट। ठीक
  117. 3:46है? तो जब भी आप इस मेथड को कॉल करोगे
  118. 3:48आपके कंसोल पे प्रिंट हो जाएगा। ईमेल
  119. 3:50नोटिफिकेशन सेंड। हम ऑर्डर सर्विस में
  120. 3:51चलते हैं। अब ऑर्डर सर्विस में क्या करता
  121. 3:53हूं? मेरे को ईमेल नोटिफिकेशन को भेजना
  122. 3:54है। राइट? तो मुझे सेंड नोटिफिकेशन कॉल
  123. 3:56करना पड़ेगा। तो उसके लिए मैं क्या करता
  124. 3:57हूं? सबसे पहले ऑब्जेक्ट बनाता हूं अपना
  125. 3:59ईमेल सर्विस का। लेट्स से अ नोटिफिकेशन
  126. 4:03इक्वल टू न्यू ईमेल सर्विस। राइट? जैसे हम
  127. 4:05ऑब्जेक्ट बनाते हैं नॉर्मली। और उसके बाद
  128. 4:07जैसे ही ऑर्डर प्लेस होगा, मैं क्या कर
  129. 4:08सकता हूं? इस नोटिफिकेशन का सेंड
  130. 4:10नोटिफिकेशन कॉल कर सकता हूं। और मुझे पता
  131. 4:12है कि मेरी नोटिफिकेशन यहां पे सेंड हो
  132. 4:14जानी चाहिए। ठीक है? तो अभी तक मेरे पास
  133. 4:16एक ऑर्डर सर्विस क्लास है जिसमें एक प्लेस
  134. 4:18ऑर्डर मेथड है जो प्लेस जो बस प्रिंट करता
  135. 4:20है ऑर्डर प्लेस्ड और कॉल कर देता है
  136. 4:21नोटिफिकेशन की सेंड नोटिफिकेशन और ये है
  137. 4:23हमारी ईमेल सर्विस जिसका सेंड नोटिफिकेशन
  138. 4:25जैसे ही कॉल होता है स्क्रीन पे प्रिंट हो
  139. 4:27जाता होगा ईमेल नोटिफिकेशन सेंट ठीक है
  140. 4:29चलो अब हमने अपने मेन कोड पे गए ठीक है तो
  141. 4:33इस हेलो को हटा देते हैं अब इसकी कोई
  142. 4:34जरूरत नहीं है सबसे पहले हम अगेन अपना
  143. 4:36ऑब्जेक्ट बनाते हैं ऑर्डर सर्विस का लेट्स
  144. 4:38से ऑर्डर इक्वल टू न्यू ऑर्डर सर्विस ठीक
  145. 4:41है और यहां पे हमें बस कॉल करना है ऑर्डर
  146. 4:44डॉट
  147. 4:45सॉरी प्लेस ऑर्डर ठीक है और हमारा सारा
  148. 4:48काम हो जाना चाहिए। एक बार करते हैं कोड
  149. 4:50को रन। हमारा कोड पहले बिल्ड होगा फिर रन
  150. 4:52हो जाएगा। तो देखो ऑर्डर प्लेस्ड ईमेल
  151. 4:54नोटिफिकेशन सेंड। कोई दिक्कत नहीं है।
  152. 4:56हमारा कोड बिल्कुल सही तरीके से चल रहा
  153. 4:58है। हमारे पास तीन क्लासेस हैं। ऑर्डर
  154. 5:00सर्विस, ईमेल सर्विस और हमारी मेन क्लास
  155. 5:02जो ऑर्डर सर्विस को कॉल करती है। राइट?
  156. 5:04ओके। अब हम ना यहां पे कुछ एक चीज़ ऑब्ज़र्व
  157. 5:07करते हैं कि ये जो ऑर्डर सर्विस है, ये
  158. 5:09ईमेल सर्विस का ऑब्जेक्ट क्रिएट करती है
  159. 5:11और उसका एक मेथड कॉल करती है। राइट? तो
  160. 5:13क्या हम ऐसे कह सकते हैं कि ये जो ऑर्डर
  161. 5:15सर्विस है ना ये ईमेल सर्विस में
  162. 5:17डिपेंडेंट है। राइट? कैसे? जब तक ये ईमेल
  163. 5:20सर्विस एग्जिस्ट नहीं करेगी हम प्लेस
  164. 5:22ऑर्डर मेथड कॉल ही नहीं कर पाएंगे क्योंकि
  165. 5:23प्लेस ऑर्डर को पहले कुछ काम करना है।
  166. 5:25लेट्स से कंसोल पे प्रिंट करना है और उसके
  167. 5:27बाद ईमेल सर्विस के ऑब्जेक्ट से उसका सेंड
  168. 5:30नोटिफिकेशन मेथड कॉल करना है। राइट? तो जब
  169. 5:32तक ये लाइन या फिर मैं कह सकता हूं जब तक
  170. 5:34ईमेल सर्विस एग्ज़िस्ट नहीं करती होगी।
  171. 5:36ईमेल सर्विस का ऑब्जेक्ट नहीं होगा तब तक
  172. 5:38मैं अपने ऑर्डर सर्विस को भी रन नहीं कर
  173. 5:40पाऊंगा। राइट? तो इस केस को मैं क्या कहता
  174. 5:42हूं कि मेरी जो ऑर्डर सर्विस है ना वो
  175. 5:44डिपेंडेंट है ईमेल सर्विस पे या फिर ईमेल
  176. 5:47सर्विस एक डिपेंडेंसी का काम करती है मेरी
  177. 5:49ऑर्डर सर्विस के अंदर। राइट? अब अगेन ये
  178. 5:51वो डिपेंडेंसी अलग है जो हमने पॉम फाइल
  179. 5:53में पढ़ी थी। राइट? उसमें भी हम क्या करते
  180. 5:54हैं? हमारा अगर जो कोड है वो किसी थर्ड
  181. 5:56पार्टी लाइब्रेरीज पे डिपेंडेंट होता है।
  182. 5:58तो हम कहते हैं कि हम डिपेंडेंसीज को ऐड
  183. 5:59कर रहे हैं। जब हम उनकी जार फाइल्स ऐड
  184. 6:01करते हैं। राइट? अगर आपने मेवन का लेक्चर
  185. 6:02नहीं देखा तो आप वो देख सकते हो समझने के
  186. 6:04लिए। पर बिल्कुल सेम ही तो चीज है कि अभी
  187. 6:06भी मैं अपनी क्लास में ऑर्डर सर्विस क्लास
  188. 6:08के अंदर ईमेल सर्विस का एक ऑब्जेक्ट
  189. 6:11क्रिएट कर रहा हूं और उसको उसका एक मेथड
  190. 6:13कॉल कर रहा हूं। राइट? तो बेसिकली मेरी
  191. 6:14ऑर्डर सर्विस डिपेंडेंट है ईमेल सर्विस
  192. 6:16पे। तो ये मेरे लिए एक डिपेंडेंसी हो गई।
  193. 6:17बिल्कुल सही। पर यहां पे ना एक प्रॉब्लम
  194. 6:20है। राइट? प्रॉब्लम है टाइट कपलिंग की। और
  195. 6:22ये बहुत बड़ी प्रॉब्लम है हमारे जावा कोड
  196. 6:24की। राइट? इसका स्प्रिंग से कोई लेना देना
  197. 6:26नहीं है। इसका लेना देना हमारे जावा के
  198. 6:27कोड के डिज़ाइन से है। हमने अपने जावा के
  199. 6:29कोड को ना बहुत ओपन नहीं बना रखा। लूजली
  200. 6:32कपल्ड नहीं बना रखा। प्रॉब्लम समझो पहले
  201. 6:35कि मैं क्या कर रहा हूं। मेरी ऑर्डर
  202. 6:37सर्विस इस ईमेल सर्विस का ऑब्जेक्ट बना
  203. 6:39रही है। जिसको मैं एक लाइन में कह सकता
  204. 6:40हूं कि वो अपनी खुद की डिपेंडेंसी को भी
  205. 6:42क्रिएट कर रही है। राइट? इट्स क्रिएटिंग
  206. 6:44इट्स ओन डिपेंडेंसी। ओके? तो ये टाइटली
  207. 6:47कपलिंग को कैसे इंट्रोड्यूस कर रहा है?
  208. 6:48सबसे पहले टाइटली कपल्ड होना होता क्या
  209. 6:50है? देखो प्रोग्रामिंग में ना हमारे पास
  210. 6:51दो फिलॉसफीज़ हैं। टाइटली कपल्ड होना
  211. 6:53प्रोग्राम का या लूजली कपल्ड होना। अब
  212. 6:55टाइटली कपल्ड होने का मतलब आप ऐसे समझ
  213. 6:57सकते हो। इमेजिन करो मुझे दिल्ली से
  214. 6:59चंडीगढ़ जाना है। ठीक है? और मैं आपको
  215. 7:01बोलूं मुझे दिल्ली से चंडीगढ़ जाना है
  216. 7:03इतने बजे इस बस में बैठ के और बस का
  217. 7:05ड्राइवर ये होना चाहिए और वो बस इस कंपनी
  218. 7:07की होनी चाहिए वगैरह-वगैरह। मैंने इतना
  219. 7:09कुछ स्पेसिफाई कर दिया। तो मैं क्या हुआ?
  220. 7:11मैं टाइटली कपल्ड हो गया। राइट? मुझे तो
  221. 7:13सिर्फ चंडीगढ़ जाना था। तो मेरे को मैटर
  222. 7:15नहीं करना चाहिए ना मैं कौन सी बस से जा
  223. 7:16रहा हूं? किस टाइम पे जा रहा हूं। चलो
  224. 7:18टाइम मैटर कर सकता है। हो सकता है पर कौन
  225. 7:19सी बस से जा रहा हूं? उसका ड्राइवर कौन
  226. 7:21है? कंपनी कौन है? वगैरह-वगैरह। है ना? तो
  227. 7:23ये मैं अपने को लूजली कपल्ड कर दिया
  228. 7:25क्योंकि मुझे सिर्फ कम्यूट करना था। राइट?
  229. 7:27अब उसी को प्रोग्रामिंग के टर्म्स में
  230. 7:28सोचो। अब मेरी ऑर्डर सर्विस को ना एक
  231. 7:31नोटिफिकेशन भेजनी थी। राइट? तो उसने दो
  232. 7:33चीजें की। एक तो पहले वो ईमेल सर्विस का
  233. 7:35ऑब्जेक्ट उसने क्रिएट किया। राइट? अब वो
  234. 7:37और किसी तरीके की नोटिफिकेशन नहीं भेज
  235. 7:39पाई। मैंने तो कहा था नोटिफिकेशन भेजो। तो
  236. 7:41कल को अगर मुझे लेट्स से एसएमएस
  237. 7:42नोटिफिकेशन भेजनी हो या पॉप अप नोटिफिकेशन
  238. 7:44भेजनी हो। तो वो करने के लिए मुझे ऑर्डर
  239. 7:46सर्विस में आके चेंज करना पड़ेगा। है ना?
  240. 7:48मेरे को यहां पे ईमेल सर्विस को हटा के नई
  241. 7:50क्लास डालनी पड़ेगी तब मेरा कोड चलेगा।
  242. 7:52राइट? तो मैंने अपने कोड को ना बहुत
  243. 7:54टाइटली कपल कर दिया। ओके? और दूसरा रीजन
  244. 7:56टाइटली कबल होने का है कि ऑर्डर सर्विस ही
  245. 7:59मेरी ईमेल सर्विस का ऑब्जेक्ट भी क्रिएट
  246. 8:01कर रही है। तो जिस डिपेंडेंसी पे डिपेंड
  247. 8:03होती है उसका ऑब्जेक्ट भी खुद ही क्रिएट
  248. 8:05करती है। राइट? तो ये मल्टीपल काम को
  249. 8:06संभाल रही है। इस सेकंड वाले पार्ट में हम
  250. 8:09थोड़ा सा बाद में आते हैं। पर पहले वाले
  251. 8:10काम को देखते हैं कि हमने क्या किया? इसको
  252. 8:12ईमेल सर्विस यानी कि कंक्रीट क्लास से
  253. 8:14टाइटली कपल कर दिया। कंक्रीट क्लास आपको
  254. 8:16पता ही है क्या होता है? बेसिकली जो क्लास
  255. 8:18एब्स्ट्रैक्ट नहीं होती जिसमें सारे
  256. 8:19मेथड्स डिफाइन होते हैं। ठीक है? तो अब
  257. 8:21हमें पता है कि प्रोग्रामिंग में ना या
  258. 8:23जावा में जनरली हमें कोड करना चाहिए
  259. 8:25इंटरफेस के लिए। राइट? हमें इंटरफेस से
  260. 8:27बात ज्यादा करनी चाहिए रादर दन कंक्रीट
  261. 8:29क्लासेस। तो मुझे पता है कल को हमारी ईमेल
  262. 8:31सर्विस की जगह हम यूज़ करना चाहेंगे एसएमएस
  263. 8:34सर्विस। तो लेट्स से मैं एक नई क्लास बना
  264. 8:36देता हूं। न्यू जावा क्लास एसएमएस
  265. 8:39अ सर्विस।
  266. 8:41ठीक है? और एसएमएस सर्विस और लेट्स से मैं
  267. 8:43एक और जावा क्लास बना देता हूं। इसका मैं
  268. 8:45नाम रखता हूं लेट्स से पॉप अप नोटिफिकेशन
  269. 8:50सर्विस कुछ इस तरीके से सर्विस ठीक है तो
  270. 8:54हो सकता है कल को मैं ये भेजना चाहूं अब
  271. 8:56आप सोचो अगर मैं चाहता हूं कि भ जो ऑर्डर
  272. 8:57सर्विस है ना वो ईमेल की जगह एसएमएस
  273. 9:00सर्विस भेजें तो पहली बात तो मुझे ऑर्डर
  274. 9:02सर्विस के अंदर आके इस कोड को चेंज करना
  275. 9:04पड़ेगा। राइट? जो कि एक ओपन क्लोज
  276. 9:05प्रिंसिपल को ब्रेक करता है। राइट? अगर
  277. 9:07आपने सॉलिड प्रिंसिपल्स पढ़े हैं तो आपको
  278. 9:08पता होगा सॉलिड में एक ओपन क्लोज
  279. 9:10प्रिंसिपल होता है ओ जो कहता है कि आपको
  280. 9:12अपनी क्लास में ना चेंज नहीं करना चाहिए।
  281. 9:14तो चेंज करने का मतलब वो आप उसमें
  282. 9:15एक्सटेंड कर सकते हो और नई चीजें पर उसको
  283. 9:17मॉडिफाई नहीं करना चाहिए। राइट? टाइटली
  284. 9:19कपल्ड डिजाइन नहीं बनाना चाहिए। बेसिकली
  285. 9:21कहने का मतलब यह है। राइट? तो मैं क्या कर
  286. 9:23सकता हूं? मैं यूज़ कर सकता हूं जावा में
  287. 9:24इंटरफेस का। राइट? हमें हमेशा कोड करना
  288. 9:26चाहिए फॉर इंटरफ़ेसेस। राइट? ताकि हमारा जो
  289. 9:28डिज़ाइन है वो लूजली कपल हो जाए। ये
  290. 9:30बिल्कुल गुड कोडिंग डिज़ाइन प्रैक्टिस है।
  291. 9:32इसका स्प्रिंग से कोई लेना देना नहीं है।
  292. 9:34पर स्प्रिंग की पूरी आइडियोलॉजी इस पे
  293. 9:36बेस्ड है जिस पे हम धीरे-धीरे जा रहे हैं।
  294. 9:37राइट? तो मैं एक काम कर सकता हूं। सबसे
  295. 9:39पहले ना मैं एक इंटरफ़ेस बनाता हूं। ठीक
  296. 9:41है? इस बार मैं बनाने वाला हूं एक इंटरफ़ेस
  297. 9:43और इसका मैं नाम रखता हूं नोटिफिकेशन।
  298. 9:44नोटिफिकेशन। ठीक है? क्योंकि मुझे पता है
  299. 9:47चाहे ईमेल सर्विस हो, ऑर्डर सर्विस हो या
  300. 9:49एसएमएस सर्विस हो। ये सब है तो एक
  301. 9:51नोटिफिकेशन। इनफैक्ट मैं इसका नाम भी
  302. 9:53नोटिफिकेशन सर्विस कर लेता हूं। ठीक है?
  303. 9:55ताकि आसान रहे। तो यहां पे मैंने अपना एक
  304. 9:56इंटरफ़ेस बना दिया नोटिफिकेशन सर्विस। अब
  305. 9:59देखो इसको कोई इसकी कोई जरूरत नहीं है। पर
  306. 10:01मैं यहां पे बहुत सारी जावा क्लासेस हो गई
  307. 10:02हैं। तो मुझे ना पैकेजेस में ऑर्गेनाइज़ कर
  308. 10:04देना चाहिए। राइट? तो लेट्स से सबसे पहले
  309. 10:06मैं एक बनाऊंगा पैकेज। उस पैकेज का नाम
  310. 10:09होगा नोटिफिकेशन। राइट? तो ये मैं अपने
  311. 10:11हिसाब से कर सकता हूं और मैं काम करता हूं
  312. 10:13ईमेल सर्विस को इस पैकेज में डाल देता
  313. 10:15हूं। नोटिफिकेशन सर्विस को भी इस पैकेज
  314. 10:17में डाल देता हूं। राइट? ऑर्डर ऑर्डर
  315. 10:20सर्विस ही रहने देंगे। पॉप अप और एसएमएस
  316. 10:21को भी इस पैकेज में डाल देते हैं। तो और
  317. 10:25एसएमएस सर्विस को भी। ठीक है? कुछ इस
  318. 10:27तरीके से। ठीक है? अब मेरा थोड़ा सा
  319. 10:30मॉड्यूल क्लीन दिख रहा है। मेरे पास एक
  320. 10:31मेन फंक्शन है, एक ऑर्डर सर्विस है और
  321. 10:33नोटिफिकेशन के अंदर मेरे पास ईमेल सर्विस,
  322. 10:35नोटिफिकेशन सर्विस, पॉप अप और एसएमएस सारे
  323. 10:36तरह के नोटिफिकेशंस हैं। तो मैंने कहा कि
  324. 10:38मैंने सबसे पहले बनाया नोटिफिकेशन सर्विस
  325. 10:40का एक इंटरफ़ेस और इसके अंदर एक सिंपल अपना
  326. 10:43मेथड रख देते हैं सेंड नोटिफिकेशन कुछ इस
  327. 10:46तरीके से। ठीक है? और अगेन इसको
  328. 10:48इंप्लीमेंट कौन करेगा? ये तीनों ईमेल
  329. 10:50सर्विस भी, पॉप अप को भी और एसएमएस भी। तो
  330. 10:52मैं ईमेल पे जाता हूं और लिखता हूं
  331. 10:54इंप्लीमेंट्स इंप्लीमेंट्स किसको?
  332. 10:57नोटिफिकेशन सर्विस को और मैं कहता हूं अगर
  333. 10:59ये इंप्लीमेंट कर रहा है तो ये इस मेथड को
  334. 11:01करेगा ओवराइड और ओवराइड किस तरह कर रहा है
  335. 11:03ये बस लिख रहा है सेंड नोट ईमेल
  336. 11:05नोटिफिकेशन सेंड ठीक है सेम तरीके से
  337. 11:07हमारी जो पॉप अप सर्विस क्लास है वो भी
  338. 11:09इंप्लीमेंट्स करेगी
  339. 11:12वो भी इंप्लीमेंट करेगी हमारे नोटिफिकेशन
  340. 11:15सर्विस के इंटरफेस को और अगेन हम क्या कर
  341. 11:19सकते हैं और यहां पे और यहां पे हम लिख
  342. 11:21सकते हैं अपना ओवराइड मेथड सेंड
  343. 11:23नोटिफिकेशन और यहां पे लिख सकते हैं लेट्स
  344. 11:25से पॉप अप नोटिफिकेशन सेट कुछ इस तरीके से
  345. 11:28पॉप अप
  346. 11:31राइट ठीक है अब और उसी तरीके से मैं करता
  347. 11:35हूं एसएमएस सर्विस को इंप्लीमेंट
  348. 11:37इंप्लीमेंट्स अ नोटिफिकेशन सर्विस और अगेन
  349. 11:41इसको अगर इंप्लीमेंट किया है तो इसको
  350. 11:42ओवराइट करना पड़ेगा सेंड नोटिफिकेशन को और
  351. 11:45यहां पे वो लिख देता है एसएमएस नोटिफिकेशन
  352. 11:47सेंड बहुत बढ़िया अब मेरा डिजाइन बिल्कुल
  353. 11:49सही हो गया मैंने सबसे पहले लिखा है
  354. 11:51नोटिफिकेशन सर्विस जो कि एक इंटरफेस है और
  355. 11:53उसको ईमेल पॉप अप और एसएमएस तीनों सर्विस
  356. 11:55इंप्लीमेंट करती हैं अपने-अपने तरीके
  357. 11:56कैसे? क्योंकि हमारा सिंपल एक
  358. 11:58एब्स्ट्रैक्ट फंक्शन की तरह है। ठीक है?
  359. 12:00अब हमारा जो डिज़ाइन है वो लूजली कपल होने
  360. 12:02वाला है। राइट? क्योंकि अब मैं क्या कर
  361. 12:03सकता हूं? अब मैं अपने कोड में ऑर्डर
  362. 12:05सर्विस में जाता हूं। ठीक है? और मैं किसी
  363. 12:07भी तरह की नोटिफिकेशन को डाल सकता हूं। अब
  364. 12:09मैं यहां पे क्या कर सकता हूं? सीधा
  365. 12:11नोटिफिकेशन सर्विस लिख सकता हूं।
  366. 12:13नोटिफिकेशन सर्विस नोटिफिकेशन। और यहां पे
  367. 12:15मैं जो भी चाहूंगा उसका मेथड कॉल हो
  368. 12:17जाएगा। अगर यहां पे ईमेल सर्विस लिखा हुआ
  369. 12:19है और मैं अपने मेन मेथड से क्या करता
  370. 12:21हूं? ऑर्डर डॉट प्लेस ऑर्डर कॉल करता हूं
  371. 12:23और रन करता हूं तो लिखा आएगा ऑर्डर
  372. 12:25प्लेस्ड ईमेल नोटिफिकेशन सेंड अगर मैं
  373. 12:27ऑर्डर सर्विस में जाके यहां पे लिख देता
  374. 12:29हूं लेट्स से न्यू एसएमएस सर्विस और अब
  375. 12:32जाके अपने मेन फंक्शन को रन करता हूं तो
  376. 12:34इस बार आना चाहिए ऑर्डर प्लेस्ड एसएमएस
  377. 12:36नोटिफिकेशन सेंट इनफैक्ट सेम काम मैं अपनी
  378. 12:39जो थर्ड सर्विस है जो कि है मेरी पॉप अप
  379. 12:41नोटिफिकेशन सर्विस उसके साथ भी कर सकता
  380. 12:43हूं और इस बार मेरा उसका मेथड रन हो जाएगा
  381. 12:46व्हिच इज़ पॉप अप नोटिफिकेशन सेंट ये तो
  382. 12:48सिंपल जावा कोड है जो भी आप यहां पे
  383. 12:49ऑब्जेक्ट क्रिएट करोगे और इस नोटिफिकेशन
  384. 12:51ेशन रेफरेंस वेरिएबल से सेंट नोटिफिकेशन
  385. 12:53कॉल करोगे उस पर्टिकुलर ऑब्जेक्ट का मेथड
  386. 12:55कॉल हो जाएगा। बिल्कुल सही है ना? तो अभी
  387. 12:58के लिए यहां पे वापस लिख देते हैं ईमेल
  388. 12:59सर्विस। तो ईमेल सर्विस लिखा है तो जब मैं
  389. 13:01नोटिफिकेशन डॉट सेंड नोटिफिकेशन करूंगा तो
  390. 13:03ऑब्जेक्ट कॉल होना चाहिए किसका? हमारे
  391. 13:06थ्री इंप्लीमेंटेशन है ना हमारा कॉल होना
  392. 13:07चाहिए ईमेल सर्विस का। राइट? और प्रिंट हो
  393. 13:10जाना चाहिए ईमेल नोटिफिकेशन सेंट। बहुत
  394. 13:12बढ़िया। बिल्कुल सिंपल। कोई दिक्कत नहीं
  395. 13:14है। हमने ये कोड लिखते आए हैं अभी तक। पर
  396. 13:16प्रॉब्लम समझो। टाइट कपलिंग तो अब भी यही
  397. 13:19है। राइट? हां। हां, ठीक है। मैंने यहां
  398. 13:20पे वेरिएबल टाइप चेंज कर दिया। वो मैंने
  399. 13:22एक इंटरफ़ेस को कर दिया। पर रियल ऑब्जेक्ट
  400. 13:24तो कंक्रीटली यहीं बन रहा है। राइट? अब
  401. 13:26प्रॉब्लम एक बार ध्यान से समझते हैं कि ये
  402. 13:28डिज़ाइन प्रिंसिपल्स को कैसे ब्रेक करती
  403. 13:29है। सबसे पहले एक डाउट क्लियर कर लो।
  404. 13:31ऑब्जेक्ट को क्रिएट करना प्रॉब्लम नहीं
  405. 13:33है। कहां हम उस ऑब्जेक्ट को क्रिएट कर रहे
  406. 13:34हैं? वहां वो प्रॉब्लम है। राइट? हम
  407. 13:36ऑब्जेक्ट को क्रिएट कर रहे हैं ऑर्डर
  408. 13:38सर्विस के अंदर। पर आप सोचो ऑर्डर सर्विस
  409. 13:41का काम क्या होना चाहिए? ऑर्डर्स को मैनेज
  410. 13:43करना। राइट? तो इसके अंदर वही सब मेथड्स
  411. 13:45होने चाहिए जो प्लेस जो ऑर्डर को प्लेस
  412. 13:47करने में या फिर ऑर्डर सर्विस को मैनेज
  413. 13:49करने में हेल्प करें। राइट? तो यहां पे
  414. 13:50प्लेस ऑर्डर हो सकता है, ऐड एन ऑर्डर हो
  415. 13:53सकता है। हो और भी कई सारे मेथड्स हो सकते
  416. 13:55हैं। डिलीट एन ऑर्डर हो सकता है। लेकिन
  417. 13:57यहां पे मैं नोटिफिकेशन का ऑब्जेक्ट क्यों
  418. 13:59बना रहा हूं? मैं अपनी ही डिपेंडेंसी को
  419. 14:02खुद क्रिएट क्यों कर रहा हूं? ये तो मैं
  420. 14:03बहुत ही टाइटली कपल काम कर रहा हूं। चाहे
  421. 14:05मैं यहां पे इंटरफेस को यूज़ कर रहा हूं एज
  422. 14:07अ वेरिएबल टाइप। पर अंदर से तो मैं
  423. 14:08कंक्रीटली ऑब्जेक्ट ही बना रहा हूं। है
  424. 14:10ना? तो यहां पे ना अगर हम सॉलिड डिजाइन
  425. 14:12प्रिंसिपल्स की बात करें तो दो डिजाइन
  426. 14:13प्रिंसिपल बिल्कुल फेल होते हैं। एक तो है
  427. 14:16हमारा सिंगल रिस्पांसिबिलिटी प्रिंसिपल एस
  428. 14:18क्योंकि देखो सिंगल रिस्पांसिबिलिटी
  429. 14:19प्रिंसिपल क्या कहता है कि एक क्लास की एक
  430. 14:21ही रिस्पांसिबिलिटी होनी चाहिए चेंज होने
  431. 14:23के लिए। राइट? पर इसके पास मल्टीपल
  432. 14:25रिस्पांसिबिलिटीज हैं। ये मल्टीपल चीजें
  433. 14:26हैंडल कर रहा है। एक तो ये ऑर्डर रिलेटेड
  434. 14:28मेथड्स को हैंडल करेगा। उसके अलावा ये
  435. 14:30नोटिफिकेशन के ऑब्जेक्ट को भी क्रिएट कर
  436. 14:32रहा है। ये फैक्ट्री का काम क्यों कर रहा
  437. 14:34है? नोटिफिकेशन को क्रिएट करना किसी और का
  438. 14:36काम होना चाहिए। इसका नहीं। राइट? इसका
  439. 14:38काम होना चाहिए नोटिफिकेशन को यूज़ करना।
  440. 14:40हां ये ये कर सकता है कि नोटिफिकेशन डॉट
  441. 14:42सेंड नोटिफिकेशन कि जैसे ही ऑर्डर प्लेस
  442. 14:44होता है मैं एक नोटिफिकेशन को सेंड कर
  443. 14:46देता हूं। पर मैं नोटिफिकेशन को क्रिएट
  444. 14:48क्यों करूंगा राइट एज एन ऑर्डर सर्विस। तो
  445. 14:50एक तो ये प्रॉब्लम है। दूसरा ये ओपन क्लोज
  446. 14:53प्रिंसिपल को भी ब्रेक कर रहा है। अब जब
  447. 14:54भी मुझे कोई और तरह की नोटिफिकेशन सेंड
  448. 14:56करनी है। मुझे लिटरली ऑर्डर सर्विस के
  449. 14:58अंदर आकर के कोड को चेंज करना पड़ता है जो
  450. 15:00कि मैं नहीं चाहता। है ना? तो अब देखो हम
  451. 15:03क्या कर सकते हैं? हमें अपने डिजाइन को
  452. 15:05लूजली कपल्ड बनाना है। ये हमारा मेन
  453. 15:06एजेंडा है। राइट? तो हमें याद रखना पड़ेगा
  454. 15:09कि डिपेंडेंसी होना नॉर्मल है। राइट? एक
  455. 15:11सर्विस दूसरी सर्विस पे डिपेंड कर सकती
  456. 15:14है। और हमारे कोड में ये हमेशा होता है।
  457. 15:16राइट? अभी तो आप इमेजिन करो हमारे पास
  458. 15:18ज्यादा क्लासेस ही नहीं है। एक ही इंटरफेस
  459. 15:19है जिसके पास तीन इंप्लीमेंटेशन है और एक
  460. 15:21ऑर्डर सर्विस क्लास है और एक मेन क्लास
  461. 15:23है। पर एक रियल प्रोजेक्ट में हमारे पास
  462. 15:25100्स ऑफ जावा फाइल्स होंगी। राइट? और उन
  463. 15:27100्स ऑफ जावा फाइल्स में वो एक दूसरे पे
  464. 15:29बहुत ज्यादा डिपेंड करेंगे। इनफैक्ट 100
  465. 15:31थाउज जावा फाइल्स भी हो जाती है कभी-कभी
  466. 15:33एक बहुत ही मेजर प्रोजेक्ट में अगेन फिर
  467. 15:34वो मेजर प्रोजेक्ट बहुत बड़ा हो जाएगा
  468. 15:36उसको हम माइक्रो सर्विस में ब्रेक करना
  469. 15:37चाहिए वो अलग टॉपिक है पर जनरली कहने का
  470. 15:40मतलब ये कि एक बहुत बड़े प्रोजेक्ट को
  471. 15:42मैनेज करना बहुत मुश्किल हो जाता है
  472. 15:43क्योंकि डिपेंडेंसीज तो होना बहुत कॉमन है
  473. 15:45फॉर एग्जांपल ऑर्डर सर्विस नोटिफिकेशन
  474. 15:47सर्विस पे डिपेंड करेगी राइट क्योंकि उसको
  475. 15:49नोटिफिकेशन भेजनी है ऐसे ही कोई और सर्विस
  476. 15:52लेट से यूजर सर्विस किसी और सर्विस पे
  477. 15:53डिपेंड करती होगी बहुत सारी डिपेंडेंसीज
  478. 15:55हो सकती है इनफैक्ट डिपेंडेंसी का पूरा
  479. 15:57ट्री बन सकता है कि सर्विस ए इज़ डिपेंडेंट
  480. 15:59और सर्विस बी और सर्विस बी डिपेंड करती है
  481. 16:01सर्विस सी पे। ये होना नॉर्मल है।
  482. 16:02डिपेंडेंसी से किसी को प्रॉब्लम नहीं है।
  483. 16:04प्रॉब्लम ये है कि आप डिपेंडेंट तो हो जिस
  484. 16:07पे उसका ऑब्जेक्ट भी आप खुद ही क्रिएट कर
  485. 16:08रहे हो। राइट? और दूसरा हमारी ऑर्डर
  486. 16:11सर्विस एक बिनेस लॉजिक है। राइट? जिसको
  487. 16:13ऑर्डर्स को ही हैंडल करना चाहिए। और एक
  488. 16:15ऑब्जेक्ट क्रिएट करना एक बिज़नेस लॉजिक
  489. 16:17नहीं होता। ये अगेन हमने अपने लो लेवल
  490. 16:19डिजाइन की प्लेलिस्ट में कवर किया हुआ है
  491. 16:20कि क्लीन कोडिंग प्रैक्टिस क्या होती है।
  492. 16:21पर जनरली एक बिज़नेस लॉजिक का काम ऑब्जेक्ट
  493. 16:24क्रिएट करना नहीं होना चाहिए। ओके? तो हम
  494. 16:27प्रॉब्लम तो समझ गए। अब इस प्रॉब्लम को
  495. 16:28सॉल्व कैसे करें? देखो थोड़ा सा दिमाग
  496. 16:30लगाते हैं। ऑर्डर सर्विस ये कह रहा है कि
  497. 16:33मैं इस ऑब्जेक्ट को क्रिएट नहीं करना
  498. 16:34चाहता। तो इस ऑब्जेक्ट क्रिएशन को ना कोई
  499. 16:36और हैंडल कर लो। मुझे तो बस इस मेथड को
  500. 16:39कॉल करना है किसी तरह। तो अगर इस मेथड को
  501. 16:41कॉल करना है तो इसको ये ऑब्जेक्ट क्रिएटेड
  502. 16:44मिलना चाहिए। राइट? तभी तो वो नोटिफिकेशन
  503. 16:45डॉट सेट नोटिफिकेशन कर पाएगा। राइट? इसे
  504. 16:47बना एक ऑब्जेक्ट मिलना चाहिए। राइट? तो
  505. 16:49बेसिकली मैं ये वाली लाइन नहीं लिखना
  506. 16:51चाहता। मैं उसको क्रिएट नहीं करना चाहता।
  507. 16:52मैं बस उसके ऑब्जेक्ट को कॉल करना चाहता
  508. 16:54हूं। इसका सबसे अच्छा आईडिया क्या है? मैं
  509. 16:56एक ऑर्डर सर्विस का कंस्ट्रक्टर बना लेता
  510. 16:58हूं और कंस्ट्रक्टर में मैं एक नोटिफिकेशन
  511. 17:00का ऑब्जेक्ट एक्सपेक्ट कर लेता हूं। राइट?
  512. 17:02अभी के लिए ये जो नोटिफिकेशन सर्विस का
  513. 17:03रेफरेंस वेरिएबल है नोटिफिकेशन ये मेरे
  514. 17:05लिए क्या कर रहा है? एक इंस्टेंस वेरिएबल
  515. 17:07की तरह काम कर रहा है। है ना? मेरी क्लास
  516. 17:08के अंदर एक वेरिएबल है। तो मैं क्या कर
  517. 17:10सकता हूं? अभी के लिए एक कंस्ट्रक्टर
  518. 17:11बनाता हूं। लेट्स से पब्लिक ऑर्डर सर्विस
  519. 17:13और यहां पे मैं एक्सपेक्ट करता हूं कि कोई
  520. 17:15मुझे नोटिफिकेशन सर्विस इस नोटिफिकेशन का
  521. 17:18ऑब्जेक्ट सेंड कर देगा और मैं उसको सेट कर
  522. 17:21दूंगा अपने ऑब्जेक्ट पे। सो दिस डॉट
  523. 17:22नोटिफिकेशन इज़ नोटिफिकेशन जो भी मेरे को
  524. 17:25यहां पे रिसीव हुआ है कुछ इस तरीके से और
  525. 17:28जो भी मुझे यहां पे सेंड करेगा इसको बंद
  526. 17:30कर लेते हैं। हां और जो भी मुझे यहां पे
  527. 17:31सेंड करेगा मैं उसका सेंड नोटिफिकेशन कॉल
  528. 17:34कर लूंगा। ठीक है? ये मेरा सिंपल लॉजिक
  529. 17:36है। पर अगेन अभी मुझे यहां पे एरर आ रहा
  530. 17:37है। इसको मैं थोड़ा सा इस साइड को करता
  531. 17:39हूं। हां अगेन एरर आ रहा है। क्योंकि अभी
  532. 17:41तक मैं इसमें अभी तक जहां मैं मेन के अंदर
  533. 17:43अपने ऑर्डर सर्विस को कॉल कर रहा था तो
  534. 17:46विदाउट कंस्ट्रक्टर कर रहा था। राइट? तो
  535. 17:47वो एरर आना लाजमी है। पर अभी उसको समझते
  536. 17:49हैं कि हमने क्या किया। राइट? हमने कहा कि
  537. 17:51मैंने यहां पे ऑब्जेक्ट क्रिएट किया ही
  538. 17:53नहीं। ठीक है? मैंने बस कहा कि मुझे इसकी
  539. 17:55जरूरत है। तो कोई मुझे ये पास कर दो मेरे
  540. 17:57कंस्ट्रक्टर में। अगर तुमने पास कर दिया
  541. 17:59तो जब भी मैं प्लेस ऑर्डर करूंगा ना मैं
  542. 18:01जो भी आपने ऑब्जेक्ट यहां पे पास किया
  543. 18:02होगा उसका सेंड नोटिफिकेशन कॉल कर दूंगा।
  544. 18:04ठीक है? जो भी आपने कंस्ट्रक्टर में पास
  545. 18:06किया होगा। ये तो एक इंस्टेंस वेरिएबल है
  546. 18:08एक इंटरफेस का। है ना? इसको आप कॉल थोड़ी
  547. 18:10कर सकते हो डायरेक्टली। आपको एक ऑब्जेक्ट
  548. 18:11चाहिए होगा कंक्रीट ऑब्जेक्ट और वो पास
  549. 18:13होगा इसके अंदर। ओके? अब वो पास कौन
  550. 18:16करेगा? अब ये नहीं कर रहा तो किसी को तो
  551. 18:18करना पड़ेगा। तो लेट्स से मेन वो काम
  552. 18:20करेगा। राइट? क्योंकि मेन ही इसको क्रिएट
  553. 18:21करा था। तो हम सबसे पहले एक काम करते हैं।
  554. 18:23अब इस बार एक नोटिफिकेशन सर्विस का
  555. 18:25ऑब्जेक्ट बना लेते हैं। लेट्स से
  556. 18:27नोटिफिकेशन
  557. 18:28इसका नाम नोटिफिकेशन रखते हैं इक्वल टू
  558. 18:30न्यू। अब मैं यहां पे किसी भी तरह की
  559. 18:32नोटिफिकेशन बना सकता हूं। लेट्स से सबसे
  560. 18:33पहले मैंने बनाया ईमेल सर्विस। ठीक है? और
  561. 18:36उस नोटिफिकेशन के ऑब्जेक्ट को मैं यहां
  562. 18:38इसके कंस्ट्रक्टर के अंदर सेंड कर सकता
  563. 18:39हूं और सिंपली प्लेस ऑर्डर कॉल कर सकता
  564. 18:42हूं। अब इंटरेस्टिंगली जैसे ही मैं प्लेस
  565. 18:44ऑर्डर कॉल करूंगा मेरा ऑर्डर प्लेस्ड ईमेल
  566. 18:46नोटिफिकेशन सेंड आ जाएगा। अब देखो कितना
  567. 18:48इंटरेस्टिंग हो गया। अब अगर मुझे ईमेल अब
  568. 18:51अगर मुझे नोटिफिकेशन टाइप को बदलना है
  569. 18:53मुझे ईमेल सर्विस की जगह एसएमएस सर्विस
  570. 18:56एसएमएस नोटिफिकेशन भेजनी है तो मुझे बस
  571. 18:59यहां पे मेन के अंदर चेंज करना पड़ा और
  572. 19:01मेरा काम हो गया अब मैं इसको रन करूंगा तो
  573. 19:03एसएमएस नोटिफिकेशन सेंट राइट तो ना तो
  574. 19:06मुझे अपने ऑर्डर सर्विस के अंदर कोई चेंज
  575. 19:07करना पड़ा और अगेन नोटिफिकेशन को तो मेरे
  576. 19:09को छेड़ना ही नहीं पड़ा क्योंकि वो तो
  577. 19:10अपना इंटरफेस के साथ बना हुआ है। है ना?
  578. 19:12जिसमें मेरा एक इंटरफेस है और उसकी तीन
  579. 19:14इंप्लीमेंटेशंस हैं। ऑर्डर सर्विस बस क्या
  580. 19:16कहता है? उसको यूज़ करता है और कंस्ट्रक्टर
  581. 19:18से उस वैल्यू को ले लेता है। राइट? तो
  582. 19:20बेसिकली मेरा ओपन क्लोज प्रिंसिपल फॉलो हो
  583. 19:21गया। अब मुझे इस क्लास को छेड़ना नहीं
  584. 19:23पड़ता। है ना? नई तरह की नोटिफिकेशन को
  585. 19:25स्विच करने के लिए। दूसरा सिंगल
  586. 19:27रिस्पांसिबिलिटी भी ट्रू हो गया। क्योंकि
  587. 19:28अब इसकी एक ही रिस्पांसिबिलिटी है जो कि
  588. 19:30है ऑर्डर्स को हैंडल करना। ये नोटिफिकेशन
  589. 19:32को हैंडल नहीं करता। इसका बस मेथड कॉल
  590. 19:34करता है। बेसिकली डेलीगेट करता है अपना
  591. 19:36काम किसी और पे। राइट? खुद नोटिफिकेशन को
  592. 19:38क्रिएट नहीं करता। और हां अगर हम अपने मेन
  593. 19:40मेथड में जाएंगे तो मेन मेथड में हम क्या
  594. 19:42कर रहे हैं? हम सीधा इसका ऑब्जेक्ट बना
  595. 19:43सकते हैं एसएमएस का या नोट या ईमेल का या
  596. 19:46फिर अपने पॉप अप नोटिफिकेशन का। पॉप अप
  597. 19:49नोटिफिकेशन सर्विस कुछ इस तरीके से और उसे
  598. 19:52रन कर सकते हैं और हमारा उस तरीके की
  599. 19:54नोटिफिकेशन सेंड हो जाएगी। कोई दिक्कत
  600. 19:55नहीं है। अब यहां पे ना एक और इंटरेस्टिंग
  601. 19:57चीज ये हो गई है। अब क्योंकि ऑर्डर सर्विस
  602. 19:59खुद से नोटिफिकेशन का ऑब्जेक्ट क्रिएट
  603. 20:01नहीं कर रही। ऑर्डर सर्विस को ये पता होने
  604. 20:03की भी जरूरत नहीं है कि किस तरह की
  605. 20:05नोटिफिकेशन इसे भेजी जाती है। ये जो भी आप
  606. 20:08इसे भेजोगे उसका सेंड नोटिफिकेशन कॉल कर
  607. 20:10देगा। राइट? क्योंकि ये एक्सपेक्ट क्या कर
  608. 20:11रहा है? ये एक नोटिफिकेशन एक्सपेक्ट कर
  609. 20:13रहा है। नोटिफिकेशन सर्विस और नोटिफिकेशन
  610. 20:15कोई भी हो सकती है। एसएमएस भी एक
  611. 20:16नोटिफिकेशन है ये वाली है ना ईमेल भी एक
  612. 20:19नोटिफिकेशन है। पॉपअप भी एक नोटिफिकेशन
  613. 20:21है। ऑर्डर सर्विस को उससे मतलब ही नहीं है
  614. 20:23कि कौन सी आप कंक्रीट नोटिफिकेशन यूज़ करते
  615. 20:25हो। इसे बस एक मतलब है। आप मुझे किसी तरह
  616. 20:28की नोटिफिकेशन दो और मैं उसका सेंड
  617. 20:30नोटिफिकेशन कॉल कर दूं। इसका काम खत्म।
  618. 20:32इसको एक्चुअली मतलब नहीं है नोटिफिकेशन
  619. 20:34से। इसको बस मतलब है अपने लॉजिक से कि ये
  620. 20:36खुद क्या कर रहा है। राइट? तो बेसिकली ना
  621. 20:39अब इसकी जो डिपेंडेंसी है वो इसको बाहर से
  622. 20:41मिल रही है। राइट? पहले ही जो इसकी
  623. 20:43डिपेंडेंसी थी जो कि नोटिफिकेशन सर्विस है
  624. 20:45इसका ऑब्जेक्ट ये खुद क्रिएट कर रहा था।
  625. 20:46इट वाज़ क्रिएटिंग इट्स ओन डिपेंडेंसी। अब
  626. 20:48इसको ये जो डिपेंडेंसी है नोटिफिकेशन की
  627. 20:51इसको मेन प्रोग्राम से मिल रही है। मेन
  628. 20:52डॉट जावा से मिल रही है। राइट? अब इसको
  629. 20:55प्रोग्रामिंग टर्मिनोलॉजी में हम कहते हैं
  630. 20:56डिपेंडेंसी इंजेक्शन। क्योंकि देखो इसकी
  631. 20:59डिपेंडेंसी थी नोटिफिकेशन सर्विस। पहले ये
  632. 21:01खुद अपनी डिपेंडेंसी क्रिएट कर रहा था और
  633. 21:03उसको यूज़ करता था। पर मैंने कहा ये
  634. 21:05जिम्मेदारी इससे छीन लेते हैं क्योंकि ये
  635. 21:06जिम्मेदारी इसकी होनी ही नहीं चाहिए। इसकी
  636. 21:08जिम्मेदारी ऑर्डर को संभालने की होनी
  637. 21:10चाहिए। तो मैंने क्या किया? इससे ये
  638. 21:11जिम्मेदारी ले ली। इसकी जो डिपेंडेंसी है
  639. 21:13वो मैंने कहा कि तू क्रिएट मत कर। मैं
  640. 21:16कहीं और से वो डिपेंडेंसी तेरे में
  641. 21:18इंजेक्ट करूंगा। तो मेरा मेन मेथड वो
  642. 21:20डिपेंडेंसी जो कि है एक तरह की
  643. 21:22नोटिफिकेशन। देखो हमने पहले इसने एक
  644. 21:23नोटिफिकेशन बनाई इक्वल टू न्यू पॉप अप
  645. 21:25नोटिफिकेशन। और फिर उस टाइप की जो
  646. 21:27डिपेंडेंसी है वो इसको कंस्ट्रक्टर में
  647. 21:29सेंड कर दिया। तो जैसे ही कंस्ट्रक्टर में
  648. 21:31सेंड किया इसने अपने ऑब्जेक्ट के अंदर
  649. 21:33इसने अपने इंस्टेंस वेरिएबल के अंदर उसको
  650. 21:35ले लिया और उसका सेंड नोटिफिकेशन कॉल कर
  651. 21:38दिया जब भी प्लेस ऑर्डर कॉल होता है
  652. 21:39बेसिकली तब राइट तो यहां पे हमने क्या
  653. 21:41किया डिपेंडेंसी को इंजेक्ट किया फ्रॉम
  654. 21:43मेन टू आवर ऑर्डर सर्विस राइट इसी को
  655. 21:45डिपेंडेंसी इंजेक्शन कहते हैं कोई
  656. 21:47कॉम्प्लिकेटेड टर्म नहीं है सिंपल सा मतलब
  657. 21:49है कि जो भी डिपेंडेंसी है जिस पे आपका
  658. 21:51कोड डिपेंड करता है आपकी क्लास डिपेंड
  659. 21:53करती है वो उसको खुद से क्रिएट मत करने दो
  660. 21:55वो बाहर से प्रोवाइड कर दो राइट अब वो
  661. 21:57बाहर से मतलब कहां से कहीं से भी अभी के
  662. 21:59लिए हमने यहां पे मेन मेन डॉट जावा से
  663. 22:00प्रोवाइड कर दिया क्योंकि हम चाहते हैं
  664. 22:02हमारी बाकी सारी क्लास इंडिपेंडेंट रहे।
  665. 22:04मेन हमारा एक ड्राइवर की तरह काम करे कि
  666. 22:05वो सब कुछ ड्राइव करेगा। वो सब कुछ मैनेज
  667. 22:08करेगा। है ना? अब अगर हम इसके बेनिफिट्स
  668. 22:10की बात करें अब सबसे बड़ा बेनिफिट तो यही
  669. 22:12है। ऑब्वियसली हमारा ऑर्डर सर्विस
  670. 22:13इंडिपेंडेंट हो गया। है ना? इसको अब अगर
  671. 22:16मुझे अपनी नोटिफिकेशन को चेंज करना है तो
  672. 22:17ऑर्डर सर्विस के अंदर चेंज करने की जरूरत
  673. 22:19नहीं है। राइट? इससे भी बड़ा एक बेनिफिट
  674. 22:21बताऊं। हम अपने कोड को अब बेटर यूनिट
  675. 22:23टेस्ट कर सकते हैं। अगेन अभी तक हमने
  676. 22:25यूनिट टेस्टिंग नहीं पढ़ी है। कैसे होती
  677. 22:27है? पर आप मान लो यूनिट टेस्टिंग का मतलब
  678. 22:28होता है आप एक मान लो पर्टिकुलर फाइल को
  679. 22:30टेस्ट करना चाहते हो एक पर्टिकुलर क्लास
  680. 22:32को तो मुझे सिर्फ ऑर्डर सर्विस को टेस्ट
  681. 22:34करना है पर अगर मैं अपने पुराने कोड में
  682. 22:36जाता जहां पे मैं लिटरली यहीं पे ऑब्जेक्ट
  683. 22:38बना रहा था तो एक्चुअली यहां पे लिखा हुआ
  684. 22:39था लेट्स से न्यू ईमेल सर्विस कुछ इस
  685. 22:41तरीके से लिखा हुआ था और मैं यहां पे इसकी
  686. 22:43वैल्यू कंस्ट्रक्टर से ले भी नहीं रहा था।
  687. 22:45उस केस में क्या होता है कि अगर मुझे
  688. 22:47ऑर्डर सर्विस को टेस्ट करना है और आपको
  689. 22:48पता है हम टेस्ट यूनिट टेस्ट केसेस कहां
  690. 22:50लिखते हैं? अपने टेस्ट के अंदर जावा के
  691. 22:52अंदर सेम फोल्डर स्ट्रक्चर फॉलो करते हैं।
  692. 22:54और जैसे ही यहां पे हमारी ऑर्डर सर्विस
  693. 22:56यहां बनी हुई है। यहां पे भी हम अपनी
  694. 22:57ऑर्डर सर्विस टेस्ट क्लास बनाते हैं और
  695. 22:59उसके अंदर टेस्ट केसेस लिखते हैं। राइट?
  696. 23:00अगेन ये हमने अपने मेवन के लेक्चर में
  697. 23:02डिस्कस किया हुआ है। पर अगर यहां पे हम
  698. 23:04सोचें कि अगर हमें इसके टेस्ट केसेस लिखने
  699. 23:06पड़ते तो ऑर्डर सर्विस क्योंकि नोटिफिकेशन
  700. 23:09सर्विस पे डिपेंड करती है और उसे खुद
  701. 23:11क्रिएट भी करती है तो हमें खुद ना चाहते
  702. 23:13हुए भी इस ईमेल सर्विस के साथ काम करना
  703. 23:16पड़ता। राइट? तो आप सोचो मेरे को टेस्ट
  704. 23:17करना है ऑर्डर सर्विस को। पर उसको टेस्ट
  705. 23:19करने के लिए बेसिकली उसकी प्लेस ऑर्डर की
  706. 23:21फंक्शनैलिटी टेस्ट करने के लिए ना मुझे
  707. 23:23एक्चुअल नोटिफिकेशन को भेजना पड़ रहा है।
  708. 23:25क्योंकि ये जो नोटिफिकेशन है ये
  709. 23:26डायरेक्टली टाइटली कपल्ड है हमारी ईमेल
  710. 23:28सर्विस के साथ। है ना? तो मैं प्लेस ऑर्डर
  711. 23:31टेस्टिंग कर रहा हूं। उस टेस्टिंग के लिए
  712. 23:32भी मेरी जो नोटिफिकेशन है वो सेंड हो जाती
  713. 23:34है। क्योंकि एक्चुअली मैं ईमेल सर्विस के
  714. 23:36साथ काम कर रहा हूं। तो ये बहुत ही बेकार
  715. 23:37टेक्निक है। राइट? अब देखो पर जैसे ही
  716. 23:39मैंने डिपेंडेंसी इंजेक्शन करी कि बाहर से
  717. 23:42डिपेंडेंसी मिलेगी तो मेरी ऑर्डर सर्विस
  718. 23:44अब डिपेंडेंसी क्रिएट नहीं करती। उसको
  719. 23:46सर्विस बाहर से उसको डिपेंडेंसी बाहर से
  720. 23:48प्रोवाइड की जाती है। तो अगर मुझे टेस्ट
  721. 23:50करना है ना मैं अपनी एक टेस्टिंग फाइल बना
  722. 23:52सकता हूं। लेट्स से अभी मैं इसको इसके
  723. 23:53अंदर ही बना रहा हूं। तो लेट्स से मैं
  724. 23:55यहां पे लिख देता हूं फेक ईमेल सर्विस जो
  725. 23:58क्या करेगा? ईमेल सर्विस को सिर्फ फेक
  726. 24:00करने की कोशिश करेगा और इसको भी
  727. 24:01इंप्लीमेंट करा लेता हूं हमारी ईमेल
  728. 24:03सर्विस को सॉरी अपनी ईमेल नहीं सॉरी
  729. 24:06नोटिफिकेशन सर्विस को राइट कुछ इस तरीके
  730. 24:08से और यहां पे अगेन इसको ओवराइड करना
  731. 24:11पड़ेगा किसको
  732. 24:14अगेन ये ओवराइड करेगा हमारे पब्लिक
  733. 24:19हमारे
  734. 24:21सेंड नोटिफिकेशन नाम के मेथड को
  735. 24:28सेंड नोटिफिकेशन नाम के मेथड को और इसके
  736. 24:31अंदर लेट्स से हम लिख सकते हैं लेट्स से
  737. 24:35डमी
  738. 24:37ईमेल कॉल ठीक है तो हम एक्चुअली कोई ईमेल
  739. 24:39कॉल नहीं कर रहे राइट हम क्यों अपने हम
  740. 24:42क्यों अपना पैसा स्पेंड करेंगे एक्चुअली
  741. 24:44ईमेल कॉल करने के लिए डमी ईमेल सेंड राइट
  742. 24:47तो यहां पे हम एक्चुअली कोई ईमेल सेंड
  743. 24:48नहीं कर रहे तो हमने लिख दिया डमी ईमेल
  744. 24:50सेंड ये बताने के लिए फेक ईमेल सर्विस बना
  745. 24:52रहे हैं अपना किसको ऑर्डर सर्विस को टेस्ट
  746. 24:54करने के लिए क्योंकि अब मैं क्या कर सकता
  747. 24:56हूं। अगर मैं अपने मेन मेथड में जाऊं मेन
  748. 24:58मेथड में और यहां पे फेक ईमेल सर्विस का
  749. 25:00एक ऑब्जेक्ट बना दूं। ठीक है? तो मुझे इस
  750. 25:02ऑर्डर सर्विस में कुछ चेंज नहीं करना
  751. 25:04पड़ा। यहां पे बस मैंने ऑब्जेक्ट चेंज
  752. 25:05किया और मैंने इसको रन किया और यहां पे
  753. 25:07मेरा ऑर्डर प्लेस्ड डमी ईमेल सेंड आ गया।
  754. 25:10राइट? तो कहने का मतलब ये अभी तो यहां पे
  755. 25:12हमने कुछ लिखा ही नहीं है। यहां पे हर जगह
  756. 25:13हमने सिर्फ प्रिंटिंग कर रखी है। पर आप
  757. 25:15एक्चुअल प्रोग्राम की बात करो तो प्लेस
  758. 25:17ऑर्डर में बहुत सारी चीजें होती होंगी।
  759. 25:19राइट? तो यहां पे कुछ एक्चुअल बिजनेस
  760. 25:22लॉजिक होता होगा। बिजनेस लॉजिक सेम। राइट?
  761. 25:25और एक बार वो बिजनेस लॉजिक हो जाएगा, आपका
  762. 25:27आर्डर प्लेस हो जाएगा तो वो नोटिफिकेशन
  763. 25:29भेजता होगा। और जो आपकी ईमेल सर्विस है वो
  764. 25:32भी एक्चुअली यहां पर नोटिफिकेशन भेजती
  765. 25:34होगी। तो यहां पे एक्चुअल नोटिफिकेशन सेंड
  766. 25:36होती होगी। राइट? तो मैं नहीं चाहता
  767. 25:38एक्चुअली नोटिफिकेशन सेंड हो मेरी
  768. 25:40टेस्टिंग में। तो मैंने यहां पे फेक ईमेल
  769. 25:41सर्विस बना दी। और फेक ईमेल सर्विस को भी
  770. 25:43इंप्लीमेंट करवा दिया नोटिफिकेशन सर्विस
  771. 25:45को ताकि मैं अपने मेन मेथड में इस फेक
  772. 25:48ईमेल सर्विस का भी ऑब्जेक्ट क्रिएट कर
  773. 25:49सकूं और उसको नोटिफिकेशन की जगह भेज सकूं।
  774. 25:52राइट? क्योंकि हमारी ऑर्डर सर्विस तो
  775. 25:53नोटिफिकेशन सर्विस एक्सपेक्ट करती है।
  776. 25:55इसको नहीं पता किसी भी तरह की नोटिफिकेशन
  777. 25:57को भेज दो ये एक्सेप्ट कर लेगी। क्योंकि
  778. 25:58नोटिफिकेशन सर्विस खुद एक इंटरफेस है। जो
  779. 26:00भी इसको इंप्लीमेंट करेगा उसको वो
  780. 26:01एक्सपेक्ट कर सकता है। है ना? एक पेरेंट
  781. 26:03क्लास का रेफरेंस वेरिएबल चाइल्ड क्लास के
  782. 26:04ऑब्जेक्ट को कॉल कर सकता है। बेसिक जावा
  783. 26:06रूल है ना? तो हमारा ये पूरा का पूरा कोड
  784. 26:08ईजीली रन हो जाएगा। मैं अपने कोड को टेस्ट
  785. 26:10बेटर कर पाऊंगा। है ना? तो यूनिट टेस्ट
  786. 26:12केसिंग ईजी हो जाती है। अगर हम डिपेंडेंसी
  787. 26:14इंजेक्शन करते हैं। पर अब एक बहुतेंट
  788. 26:17क्वेश्चन हमारे माइंड में आया कि ठीक है।
  789. 26:18हमने डिपेंडेंसी इंजेक्शन कर दिया। तो मेन
  790. 26:21ने उस डिपेंडेंसी को इंजेक्ट कर दिया
  791. 26:22ऑर्डर सर्विस के अंदर। इनफैक्ट यह हम कर
  792. 26:24सकते थे और भी बहुत सारी क्लासेस के साथ।
  793. 26:26तो यहां से हमें यह तो समझ आ गया कि हम
  794. 26:28डिपेंडेंसी इंजेक्ट कर सकते हैं। राइट? और
  795. 26:30हम सारी डिपेंडेंसी इंजेक्ट कर सकते हैं
  796. 26:32अपने मेन मेथड के थ्रू। तो बेसिकली अगर हम
  797. 26:34बहुत सारी सर्विज भी बनाते हैं। अभी के
  798. 26:35लिए हमारे पास सिर्फ एक नोटिफिकेशन की
  799. 26:38सारी सर्विज हैं और हमारे पास ऑर्डर
  800. 26:39सर्विस है। पर आप मान लो यूजर सर्विस है,
  801. 26:42पेमेंट सर्विस है। बहुत सारी सर्विज अगर
  802. 26:43हमारे पास हैं। उन सबके डिपेंडेंसी
  803. 26:45इंजेक्ट हम कर सकते थे अपने मेन के थ्रू।
  804. 26:47और बाकी सारी सर्विज को अपने आप वो
  805. 26:49डिपेंडेंसी मिल जाती और वो उनके मेथड्स
  806. 26:51कॉल कर सकते थे। राइट? जैसे बेसिकली हमारा
  807. 26:53ऑर्डर सर्विस करता है। पर यहां पे ना एक
  808. 26:55बहुत जरूरी क्वेश्चन आता है हमारे माइंड
  809. 26:56में कि अगर हम सारी डिपेंडेंसी मेन के
  810. 26:58थ्रू इंजेक्ट करेंगे तो मेन तो हमारा बहुत
  811. 27:01ज्यादा कॉम्प्लिकेटेड बन जाएगा। राइट? तो
  812. 27:02बेसिकली मेन में बहुत ज्यादा वायरिंग हो
  813. 27:04जाएगी। वो एक-एक करके सारी डिपेंडेंसीज को
  814. 27:06वायर कर रहा होगा। है ना? तो हम उसको कैसे
  815. 27:08इजी करेंगे? अभी तो कम सर्विसेज थी पर
  816. 27:10बहुत सारी सर्विज हो गई। तो हमारा मेन
  817. 27:11बहुत कॉम्प्लिकेटेड होता जाएगा। राइट?
  818. 27:13इसका आंसर हमें स्प्रिंग कोर ला के देता
  819. 27:15है। अभी हम स्प्रिंग फ्रेमवर्क को यूज़
  820. 27:17नहीं कर रहे हैं। पर हम मान सकते हैं कि
  821. 27:18जब हम नेक्स्ट वीडियो से स्प्रिंग को यूज़
  822. 27:20करेंगे तो वो हमारे लिए वो डिपेंडेंसी को
  823. 27:22मैनेज करेगा। राइट? उनको वो इंजेक्ट
  824. 27:24करेगा। हमें मेन में भी कुछ भी करने की
  825. 27:26जरूरत नहीं लगेगी। आपको पूरा कोड बहुत
  826. 27:28मैजिकल लगेगा कि वो सब कुछ खुद से कैसे
  827. 27:29मैनेज करता है। राइट? और यही है स्प्रिंग
  828. 27:31कोर के बेसिक फंडामेंटल्स। अगेन उसको हम
  829. 27:34अगले आने वाले वीडियोस में देखेंगे। पर
  830. 27:36अभी ना हम चलते हैं और अपने डिपेंडेंसी
  831. 27:37इंजेक्शन को थोड़ा और डेप्थ में समझते
  832. 27:39हैं। अब डिपेंडेंसी इंजेक्शन की ना एक
  833. 27:41बहुत ही फेमस लाइन है वो है कि डोंट
  834. 27:43क्रिएट योर ओन डिपेंडेंसी बट गेट योर
  835. 27:45डिपेंडेंसी। राइट? आपको खुद की डिपेंडेंसी
  836. 27:47क्रिएट नहीं करनी। किसी से गेट करनी है।
  837. 27:49अभी के लिए हम मेन से गेट कर रहे हैं। पर
  838. 27:50जैसे मैंने आपको बोला कि हम स्प्रिंग में
  839. 27:52जब जाएंगे स्प्रिंग फ्रेमवर्क हमारे लिए
  840. 27:54वो काम करेगा। डिपेंडेंसी मैनेज करेगा,
  841. 27:56इंजेक्ट करेगा, खुद से ऑब्जेक्ट्स क्रिएट
  842. 27:58करेगा। बहुत कुछ वो खुद करने वाला है।
  843. 27:59राइट? तो यहां पे बेसिक फंडामेंटल लाइन
  844. 28:01क्या हो सकती है? अ क्लास शुड अ क्लास शुड
  845. 28:05आस्क व्हाट इट नीड्स एंड नॉट बिल्ड
  846. 28:09एवरीथिंग
  847. 28:10एंड नॉट
  848. 28:13बिल्ड एवरीथिंग
  849. 28:15इटसेल्फ
  850. 28:17इटसेल्फ। तो बेसिकली अगर एक क्लास को कुछ
  851. 28:20भी चाहिए तो वो आस्क करे किसी से मांग ले
  852. 28:22रादर देन उसको खुद से बना दे। राइट? तो ये
  853. 28:24बहुत फेमस लाइन है। हमें इससे समझ आता है
  854. 28:25कि डिपेंडेंसी इंजेक्शन कितना जरूरी है और
  855. 28:27क्यों जरूरी है। और इंटरेस्टिंगली ये भी
  856. 28:29याद रखना कि डिपेंडेंसी इंजेक्शन कोई
  857. 28:31स्प्रिंग का कांसेप्ट नहीं है। राइट?
  858. 28:33स्प्रिंग उसको ऑटोमेट करता है। पर
  859. 28:35डिपेंडेंसी इंजेक्शन इंडिविजुअली एक्सिस्ट
  860. 28:36कर सकता है। इंडिपेंडेंटली एक्सिस्ट कर
  861. 28:38सकता है। अभी हमने देखो पूरा का पूरा कोड
  862. 28:40लिखा विदाउट यूजिंग स्प्रिंग फ्रेमवर्क और
  863. 28:41हम डिपेंडेंसी को बाहर से इंजेक्ट कर रहे
  864. 28:43हैं। राइट? अब ना एक बार देखते हैं कि
  865. 28:45डिपेंडेंसी इंजेक्शन के कुछ टाइप्स हो
  866. 28:47सकते हैं। तो अभी मोटा-मोटा ना मैं आपको
  867. 28:49दो टाइप्स के बारे में बता सकता हूं
  868. 28:50डिपेंडेंसी इंजेक्शन के। तो अगर हम मॉडल
  869. 28:52सर्विस के अंदर जाएं तो अभी हम देखो अपनी
  870. 28:54डिपेंडेंसी को कंस्ट्रक्टर के थ्रू
  871. 28:55इंजेक्ट कर रहे हैं। राइट? तो ये जो
  872. 28:56नोटिफिकेशन सर्विस है वो एक कंस्ट्रक्टर
  873. 28:58में एक नोटिफिकेशन वो एक्सपेक्ट कर रहा
  874. 29:00है। पर हमारे पास एक और तरीका हो सकता है
  875. 29:02डिपेंडेंसी को इंजेक्ट करने का और वो है
  876. 29:03सेटर्स के थ्रू। राइट? आपको पता है हम
  877. 29:05किसी क्लास के गेटर्स एंड सेटर्स बनाते
  878. 29:07हैं। अभी हमारे क्लास में एक ही इंस्टेंस
  879. 29:08वेरिएबल है नोटिफिकेशन। हम चाहें तो इसके
  880. 29:10गेटर सेटर बना सकते हैं। अब मैं चाहूं तो
  881. 29:12इसे मैन्युअली बनाऊं या फिर मेरे पास
  882. 29:13इंटेलिजेंट में एक तरीका होता है कि मैं
  883. 29:15रखूंगा जनरेट। और यहां पे मेरे पास होगा
  884. 29:17सेट। मैं यहां पे तो गेटर एंड सेटर दोनों
  885. 29:19भी जनरेट कर सकता हूं। पर अभी के लिए मुझे
  886. 29:20सिर्फ सेटर चाहिए और मैं सेलेक्ट कर सकता
  887. 29:22हूं नोटिफिकेशन सर्विस। ओके। तो देखो यहां
  888. 29:24पे मेरे पास अपने आप सेटर बन के रेडी हो
  889. 29:26गया। सेट नोटिफिकेशन जो क्या करेगा? एक
  890. 29:28नोटिफिकेशन सर्विस का ऑब्जेक्ट लेगा और
  891. 29:30हमारे इस नोटिफिकेशन के वेरिएबल में उसको
  892. 29:31साइन कर देगा। ठीक है? तो मैं चाहूं तो
  893. 29:34कंस्ट्रक्टर के थ्रू भी सेट कर सकता हूं।
  894. 29:35मैं चाहूं तो एक सेटर के थ्रू भी सेट कर
  895. 29:37सकता हूं। तो अभी मैं कंस्ट्रक्टर के थ्रू
  896. 29:39सेट नहीं करना चाहता। लेट से मैं इसको कर
  897. 29:40देता हूं कमेंट। अ या फिर एक काम करते
  898. 29:42हैं। कमेंट नहीं करते। अपना एक और
  899. 29:44कंस्ट्रक्टर बना लेते हैं। इसको ओवरलोड कर
  900. 29:45देते हैं। राइट? इसको हम बना लेते हैं
  901. 29:47खाली कंस्ट्रक्टर ताकि मैं खाली ऑब्जेक्ट
  902. 29:48भी क्रिएट कर सकूं। ठीक है? तो मैं इसको
  903. 29:50एम्प्टी कंस्ट्रक्टर बना दिया। अब मैं
  904. 29:52चाहूं तो मैं मेन फंक्शन में जा के ऐसे
  905. 29:54ऑब्जेक्ट क्रिएट ना करके मैं सिंपली
  906. 29:56ऑब्जेक्ट क्रिएट करूं। सिंपली ऑर्डर
  907. 29:58सर्विस का ऑब्जेक्ट क्रिएट करूं। लेट्स से
  908. 29:59ऑर्डर इक्वल टू न्यू ऑर्डर सर्विस और खाली
  909. 30:02कंस्ट्रक्टर के थ्रू ऐसे। और फिर यूज़ करूं
  910. 30:05ऑर्डर डॉट सेट नोटिफिकेशन। और यहां पे मैं
  911. 30:07इस नोटिफिकेशन को सेट कर दूं। अभी के लिए
  912. 30:10मैंने यहां पे फेक ईमेल लिखा हुआ है।
  913. 30:11लेट्स से एक रियल ईमेल सर्विस यूज़ कर लेते
  914. 30:13हैं और मैं इसको रन करूंगा तो मेरा फिर भी
  915. 30:15मेरा प्रोग्राम तो मेरा प्रोग्राम रन हो
  916. 30:17जाएगा। ऑर्डर प्लेस्ड ईमेल नोटिफिकेशंस
  917. 30:19एंड। ठीक है? तो मैंने यहां पे दो टाइप्स
  918. 30:21की बात करी। एक तो मैं इसको कंस्ट्रक्टर
  919. 30:22के थ्रू इंजेक्ट कर सकता हूं और दूसरा मैं
  920. 30:24इसको एक सेटर के थ्रू भी इंजेक्ट कर सकता
  921. 30:26हूं। राइट? अब हमारे पास ना एक तीसरी तरह
  922. 30:29का डिपेंडेंसी इंजेक्शन भी होता है जो
  923. 30:31फील्ड के थ्रू होता है। फील्ड फील्ड
  924. 30:33इंजेक्शन। राइट? पर इसके बारे में हम बात
  925. 30:35तब करेंगे जब हम स्प्रिंग फ्रेमवर्क के
  926. 30:36थ्रू इसको समझेंगे। क्योंकि यहां पे फील्ड
  927. 30:38इंजेक्शन करना पॉसिबल नहीं है। अगर मैं
  928. 30:39स्प्रिंग को यूज़ नहीं कर रहा। राइट? तो वो
  929. 30:41हमें समझ आएगा क्यों ऐसा है जब हम
  930. 30:43स्प्रिंग को यूज़ करेंगे। अब ना अपने
  931. 30:45नेक्स्ट टॉपिक की तरफ चलते हैं।
  932. 30:47डिपेंडेंसी इंजेक्शन के बाद जो कि है
  933. 30:49आईओसी जिसको हम बोलते हैं इन्वर्जन ऑफ
  934. 30:52कंट्रोल।
  935. 30:54अब ये ना कोई अलग टॉपिक नहीं है। ये बहुत
  936. 30:57ही ज्यादा रिलेटेड है डिपेंडेंसी इंजेक्शन
  937. 30:59से। अगर आपको ये समझ आ गया तो आईओसी तो
  938. 31:01कुछ भी नहीं है। राइट? इनफैक्ट कई लोग
  939. 31:03आईओसी और डिपेंडेंसी इंजेक्शन को
  940. 31:04इंटरचेंजबली यूज कर लेते हैं। पर अगेन ये
  941. 31:06दोनों अलग-अलग चीजें मीन करते हैं। पर ये
  942. 31:08रिलेटेड होते हैं। मैं आपको बताता हूं
  943. 31:09कैसे। अब इन्वर्जन ऑफ कंट्रोल को समझने से
  944. 31:11पहले सबसे पहले देखते हैं कंट्रोल क्या
  945. 31:13होता है। तो देखो अगर हम ध्यान से समझें
  946. 31:15तो जो हमारा इनिशियल डिज़ाइन था जिसमें
  947. 31:17ऑर्डर सर्विस डिपेंड तो करता ही था
  948. 31:19नोटिफिकेशन पे बल्कि उसको खुद क्रिएट भी
  949. 31:21करता था। राइट? तो हमारे पास थी लेट्स से
  950. 31:23यहां पे मैं लिखता हूं हमारे पास थी एक
  951. 31:24ऑर्डर सर्विस। ऑर्डर सर्विस
  952. 31:29राइट? और क्या होता था? ऑर्डर सर्विस खुद
  953. 31:31से क्रिएट करता था एक नई डिपेंडेंसी जिसको
  954. 31:33हम बोलते थे लेट्स से ईमेल सर्विस तो इसको
  955. 31:36मैं लिख देता हूं लेट्स से ईमेल सर्विस
  956. 31:39ठीक है तो पहले तो ये हो रहा था तो अगर
  957. 31:41मैं बोलूंगा ना मेरा कंट्रोल किस
  958. 31:43डायरेक्शन में फ्लो कर रहा था तो आप
  959. 31:44देखोगे कि मेरा कंट्रोल ऑर्डर सर्विस से
  960. 31:46ईमेल सर्विस की तरफ को फ्लो कर रहा था
  961. 31:48राइट ऑर्डर सर्विस रिस्पांसिबल थी ईमेल
  962. 31:50सर्विस को क्रिएट करने में ये था मेरा
  963. 31:52इनिशियल डिज़ाइन ठीक है तो यहां पे लिख
  964. 31:54सकता हूं कि ये था मेरा इनिश तो इसको मैं
  965. 31:57थोड़ा सा ज़ूम इन कर सकता हूं तो यहां पे
  966. 31:58मैं लिख सकता हूं ये था मेरा इनिशियल
  967. 32:00डिज़ाइन राइट इनिशियली मैं ऐसा कुछ कर रहा
  968. 32:02था तो इधर लिख देते हैं क्रिएट्स ऑर्डर
  969. 32:05सर्विस क्रिएट्स ईमेल सर्विस अब इस ऑर्डर
  970. 32:08सर्विस को कौन क्रिएट करता था अब
  971. 32:09ऑब्वियसली ऑर्डर सर्विस को क्रिएट करने का
  972. 32:11काम था हमारा मेन का तो अगर मैं इसको यहां
  973. 32:13ले आऊं लेट्स से ये मेरा ऑर्डर सर्विस हो
  974. 32:15गया अब ऑर्डर सर्विस को कौन क्रिएट करेगा
  975. 32:17हमारी मेन सर्विस तो यहां पे मैं लिखता
  976. 32:19हूं लेट से मेन मेन सर्विस नहीं मेरा मेन
  977. 32:21मेथड तो मैं इसको लिख देता हूं लेट से मेन
  978. 32:23अ मेन क्लास आप मान सकते हो ठीक है तो यह
  979. 32:26मेरा क्रिएट करेगा हमारी ऑर्डर सर्विस को
  980. 32:28और यह हमारा एंटायर फ्लो राइट? तो सबसे
  981. 32:30पहले मैं क्या कह सकता हूं? हमारे मेन ने
  982. 32:31ऑर्डर सर्विस क्रिएट किया और फिर ऑर्डर
  983. 32:33सर्विस ने ईमेल सर्विस को क्रिएट किया। तो
  984. 32:34फ्लो कुछ इस डायरेक्शन में था। अब सेकंड
  985. 32:37फ्लो में क्या हुआ? अब सेकंड फ्लो में
  986. 32:38आफ्टर डिपेंडेंसी इंजेक्शन। हां जी। तो
  987. 32:43आफ्टर डिपेंडेंसी इंजेक्शन क्या हुआ? इसके
  988. 32:45बाद अगर मैं इसी को कॉपी कर लूं तो हमारा
  989. 32:47डिज़ाइन कुछ ऐसा हो गया कि हमारे मेन मेथड
  990. 32:50ने ही सबसे पहले ईमेल सर्विस भी क्रिएट की
  991. 32:52क्योंकि उसको ही डिपेंडेंसी क्रिएट करनी
  992. 32:53पड़ेगी। अगेन हमारे मेन मेथड ने ऑर्डर
  993. 32:55सर्विस को भी क्रिएट किया। तो यहां पे मैं
  994. 32:56लिख देता हूं क्रिएट्स। और फाइनली हमारे
  995. 32:59मेन मेथड ने इस डिपेंडेंसी को और फाइनली
  996. 33:03हमारे मेन मेथड ने इस डिपेंडेंसी को पास
  997. 33:05किया किसको? हमारी ऑर्डर सर्विस के अंदर।
  998. 33:08राइट? तो यहां पे मैं लिख देता हूं ऑर्डर
  999. 33:10सर्विस। और इधर लिखते हैं प्रोवाइड्स
  1000. 33:14प्रोवाइड्स ईमेल सर्विस। राइट? तो कुछ ऐसा
  1001. 33:17हुआ होगा। तो डिपेंडेंसी रिजेक्शन के बाद
  1002. 33:19तो क्या हुआ? हमारे मेन ने ही ईमेल सर्विस
  1003. 33:21क्रिएट किया। मेन ने ही ऑर्डर सर्विस
  1004. 33:22क्रिएट किया। और फाइनली मेन ने उस ऑर्डर
  1005. 33:25ईमेल सर्विस के ऑब्जेक्ट को पास किया
  1006. 33:26ऑर्डर सर्विस के पास। राइट? तो आप देखो
  1007. 33:28यहां पर कंट्रोल कैसा है और इससे पहले
  1008. 33:31कंट्रोल कैसा है। तो थोड़ा सा मैं इनको
  1009. 33:32पहले सेपरेट आउट कर देता हूं। अब आप ध्यान
  1010. 33:34से देखो इन दोनों के बीच में कंट्रोल का
  1011. 33:36फ्लो। पहला कंट्रोल दिख रहा है मुझे ऑर्डर
  1012. 33:38सर्विस से ईमेल सर्विस तक आता हुआ। अगला
  1013. 33:40कंट्रोल मुझे उल्टा दिख रहा है। मेन से
  1014. 33:42ऑर्डर सर्विस तक आता हुआ। राइट? तो इसी को
  1015. 33:45हम कहते हैं इन्वर्जन ऑफ कंट्रोल। मेरा
  1016. 33:47कंट्रोल इनवर्ट हो गया। राइट? पहले मेरी
  1017. 33:49ऑर्डर सर्विस अह कहां गई? ऊपर। और हां
  1018. 33:51पहले मेरी ऑर्डर सर्विस क्रिएट करती थी
  1019. 33:54ईमेल सर्विस को तो मेरा कंट्रोल इनसाइड
  1020. 33:56था। राइट? मेरा कंट्रोल ईमेल सर्विस को
  1021. 33:58बनाने का मेरे ऑर्डर सर्विस के पास था।
  1022. 33:59उसके अंदर था। पर जैसे ही मैंने
  1023. 34:02डिपेंडेंसी इंजेक्शन लगाया मेरा जो
  1024. 34:04कंट्रोल है वो इनवर्ट हो गया। अब ऑर्डर
  1025. 34:06सर्विस को अब ऑर्डर सर्विस के पास कंट्रोल
  1026. 34:08नहीं है ईमेल सर्विस का ऑब्जेक्ट बनाने का
  1027. 34:10बल्कि वो उसको बाहर से आउटसाइड से मिल रहा
  1028. 34:13है। राइट? तो पहले जो कंट्रोल इनसाइड था
  1029. 34:15ऑर्डर सर्विस के पास अब वो कंट्रोल
  1030. 34:17आउटसाइड है। ऑर्डर सर्विस को बाहर से मिल
  1031. 34:19रहा है। और इसी को हम बोलते हैं इन्वर्जन
  1032. 34:21ऑफ कंट्रोल कि आपका जो कंट्रोल है वो
  1033. 34:23इनवर्ट हो गया। अब बहुत बढ़िया डाउट जो हो
  1034. 34:26सकता है वो है इन्वर्जन ऑफ कंट्रोल एंड
  1035. 34:27डिपेंडेंसी इन्वर्जन के बीच में रिलेशनशिप
  1036. 34:30क्या है?
  1037. 34:34ठीक है? तो आप सोचो हमारा जो इन्वर्जन ऑफ
  1038. 34:36कंट्रोल है ना वो एक आईडिया है कि हमें
  1039. 34:38ऐसा करना है। ठीक है? या फिर मैं उसे कह
  1040. 34:41सकता हूं और मैं उसे कह सकता हूं हमारा एक
  1041. 34:43प्रिंसिपल है। राइट? लेकिन जो हमारा
  1042. 34:45डिपेंडेंसी इन्वर्जन है वो एप्रोच है या
  1043. 34:48फिर टेक्निक है इसको इंप्लीमेंट करने की
  1044. 34:52टू अचीव आईओसी। राइट? हम आईओसी को एक
  1045. 34:56आईडिया एक प्रिंसिपल की बात कर सकते हैं।
  1046. 34:57बट एक्चुअली इसकी टेक्निक है डिपेंडेंसी
  1047. 35:00इन्वर्जन। तो हम इनके बीच में ये
  1048. 35:02रिलेशनशिप ड्रॉ कर सकते हैं। इन्वर्जन ऑफ
  1049. 35:03कंट्रोल डिपेंडेंसी इंजेक्शन इस तरह
  1050. 35:05रिलेटेड है। आईओसी एक प्रिंसिपल है और
  1051. 35:07डिपेंडेंसी इन्वर्जन उसका तरीका है वो चीज
  1052. 35:09अचीव करने का। अब ये सब तो हमें आ गया
  1053. 35:11समझ। पर इन सबके बीच में हमारा स्प्रिंग
  1054. 35:14फ्रेमवर्क कहां आता है? स्प्रिंग
  1055. 35:15फ्रेमवर्क। तो अगेन अभी तक हमारे जावा के
  1056. 35:19कोड में मेन हमारा काम कर रहा था सारी
  1057. 35:21डिपेंडेंसीज को इंजेक्ट करने का। सब कुछ
  1058. 35:23वायर करने का। है ना? सब कुछ कंट्रोल करने
  1059. 35:25का। या फिर मैं कह सकता हूं मेन हमारा सब
  1060. 35:27कुछ कॉन्फ़िगर कर रहा था। राइट? ऑलदो मेन
  1061. 35:30सब कुछ कॉन्फिगर करे। ये डिजाइन स्टिल
  1062. 35:32बेटर है कि हर क्लास जैसे कि ऑर्डर सर्विस
  1063. 35:34जाकर के खुद इस डिपेंडेंसी को क्रिएट करे।
  1064. 35:36राइट? ये बेकार तरीका था। इससे अच्छा तो
  1065. 35:38मेन ही वायर कर लेगा। आई नो इससे मेन
  1066. 35:40कॉम्प्लिकेट हो जाएगा। और यहीं आता है
  1067. 35:42हमारा स्प्रिंग फ्रेमवर्क। स्प्रिंग
  1068. 35:44फ्रेमवर्क के पास एक आईओसी कंटेनर होता है
  1069. 35:47जिसको हम इन्वर्जन ऑफ कंट्रोल कंटेनर बोल
  1070. 35:50सकते हैं। इन्वर्जन ऑफ कंट्रोल कंटेनर। और
  1071. 35:52इसका काम होता है ये सब करने का जो अभी
  1072. 35:54मेन कर रहा था। राइट? तो अभी हमारा कंटेनर
  1073. 35:57का काम मेन कर रहा था। राइट? कंटेनर है जो
  1074. 35:59सारी चीजें मैनेज कर रहा है। सारी
  1075. 36:00डिपेंडेंसी, सबकी वायरिंग वगैरह-वगैरह।
  1076. 36:02ठीक है? तो जैसे इसने ये डिपेंडेंसी पहले
  1077. 36:03क्रिएट की। फिर इस डिपेंडेंसी को पास किया
  1078. 36:06ऑर्डर सर्विस के अंदर। यानी कि मैं कह
  1079. 36:07सकता हूं उसको वायर किया है ना? ऑर्डर
  1080. 36:09सर्विस को वो डिपेंडेंसी पास ऑन की। अब जो
  1081. 36:12हमारा ये आईओसी कंटेनर है ये वो काम करेगा
  1082. 36:14जो स्प्रिंग फ्रेमवर्क के अंदर आता है। तो
  1083. 36:16बेसिकली हमारा जो आईओसी कंटेनर होने वाला
  1084. 36:18है ना स्प्रिंग फ्रेमवर्क का जो हम पढ़ने
  1085. 36:20वाले हैं। तो वो आपके लिए ऑब्जेक्ट्स को
  1086. 36:22क्रिएट करेगा। तो मैं लिख सकता हूं क्रिएट
  1087. 36:24क्रिएट ऑब्जेक्ट्स।
  1088. 36:28उन ऑब्जेक्ट्स को वह मैनेज करेगा। मैनेज
  1089. 36:30ऑब्जेक्ट्स
  1090. 36:31और तीसरा आपके लिए उन ऑब्जेक्ट्स को
  1091. 36:33कनेक्ट करेगा। तो बेसिकली कनेक्ट्स
  1092. 36:35ऑब्जेक्ट
  1093. 36:37ऑब्जेक्ट टुगेदर। राइट? अब अगेन क्रिएट
  1094. 36:40करने का काम देखो यहां पे पहले हमारा मेन
  1095. 36:42नोटिफिकेशन सर्विस का ऑब्जेक्ट बनाता है।
  1096. 36:44ऑर्डर सर्विस का ऑब्जेक्ट बनाता है। राइट?
  1097. 36:46तो क्रिएशन का काम हमारा मेन कर रहा है।
  1098. 36:47मैं कह रहा हूं बाद में आईओसी कंटेनर
  1099. 36:49करेगा। उनको मैनेज भी अगेन हमारा मेन कर
  1100. 36:51रहा है। मैनेज का मतलब कब वो क्रिएट
  1101. 36:53होंगे, कब वो डिस्ट्रॉय होंगे। तो कहीं ना
  1102. 36:55कहीं वो मेन मेथड ही मेंटेन कर रहा है।
  1103. 36:56राइट? अभी हमारा उसके बाद आईओसी कंटेनर
  1104. 36:58मेंटेन करेगा। लास्ट हमारा कंटेन लास्ट
  1105. 37:02अभी हमारा मेन मेथड सारी डिपेंडेंसी को
  1106. 37:04खुद से वायर कर रहा है। राइट? जैसे कि
  1107. 37:06ऑर्डर सर्विस को चाहिए नोटिफिकेशन सर्विस।
  1108. 37:08तो उसने इसके सेटर में पास कर दिया। यानी
  1109. 37:11कि डिपेंडेंसी को वायर करने का काम।
  1110. 37:12रिलेशनशिप को बिठाने का काम कर रहा है।
  1111. 37:14बाद में हमारा आईओसी कंटेनर ही वो काम
  1112. 37:16करेगा। उन ऑब्जेक्ट्स को आपस में कनेक्ट
  1113. 37:18करने का काम। राइट? ठीक है? तो ये है एक
  1114. 37:21इंट्रोडक्शन कि स्प्रिंग क्या करने वाला
  1115. 37:22है? आपको बहुत मजा आएगा। इनफैक्ट जब हम
  1116. 37:25स्प्रिंग का कोड लिखेंगे ना तो आप ये न्यू
  1117. 37:26कीवर्ड बहुत ही कम देखोगे। ऑलमोस्ट
  1118. 37:29नेगलिजिबल। राइट? हम चाहेंगे कि हमारी
  1119. 37:31ज्यादातर जो ऑब्जेक्ट्स हैं वो सब कुछ
  1120. 37:33स्प्रिंग कंटेनर मैनेज करे। स्प्रिंग
  1121. 37:34आईओसी कंटेनर ही मैनेज करें। राइट? तो
  1122. 37:36स्प्रिंग कोई मैजिक नहीं है। हम देखेंगे
  1123. 37:38उसके अंदर वो कैसे काम करता है। कैसे वो
  1124. 37:40सारे ऑब्जेक्ट्स को क्रिएट करता है। खुद
  1125. 37:42से रिलेशनशिप्स को मेंटेन करता है। यानी
  1126. 37:44कि हमें अपने कोड में 90% नजर आएंगे। खुद
  1127. 37:46से ऑब्जेक्ट को क्रिएट करने की जरूरत नहीं
  1128. 37:47पड़ेगी। हम रिलेशनशिप्स को भी खुद से
  1129. 37:49मैनेज नहीं करेंगे। वो भी हमारा स्प्रिंग
  1130. 37:51फ्रेमवर्क हमें करके दे देगा। वो सब हम
  1131. 37:52धीरे-धीरे देखेंगे। पर एक इंटरेस्टिंग चीज
  1132. 37:55जब हम बात करते हैं ऑब्जेक्ट्स की तो ये
  1133. 37:57हम बात करते हैं अपने नॉर्मल जावा कोड के
  1134. 38:00अंदर। राइट? कि ये हमारे ऑब्जेक्ट्स होते
  1135. 38:01हैं। पर जब आप आईओसी कंटेनर की बात करोगे
  1136. 38:05तो बेसिकली मुझे लिखना चाहिए स्प्रिंग
  1137. 38:06आईओसी कंटेनर। उसके लिए ऑब्जेक्ट्स का
  1138. 38:10मतलब होता है बींस। वो उनको बींस बुलाता
  1139. 38:11है। राइट? तो अभी हम आगे बींस के बारे में
  1140. 38:13बहुत बात करने वाले हैं। पर आप ऐसे मान लो
  1141. 38:15कि बींस कुछ नहीं होते। वो ऑब्जेक्ट्स ही
  1142. 38:17होते हैं जिनको स्प्रिंग कंटेनर मैनेज
  1143. 38:19करता है। स्प्रिंग आईओसी कंटेनर। राइट? तो
  1144. 38:21आप ऐसा कह सकते हो कि हर बीन एक ऑब्जेक्ट
  1145. 38:23होता है। पर जरूरी नहीं है हर ऑब्जेक्ट
  1146. 38:24बीन हो। वही ऑब्जेक्ट बीन होगा जिसको
  1147. 38:26आईओसी कंटेनर खुद मैनेज करेगा। राइट? तो
  1148. 38:29बेसिकली ये पूरा फ्लो बदलने वाला है। अभी
  1149. 38:32हमारा डिपेंडेंसी इंजेक्शन के बाद मेन
  1150. 38:34ईमेल सर्विस बनाता है। फिर मेन ऑर्डर
  1151. 38:35सर्विस भी बनाता है और फिर मेन ही ऑर्डर
  1152. 38:37सर्विस को ईमेल सर्विस प्रोवाइड करता है।
  1153. 38:40मैं कह रहा हूं हर जगह मेन से रिप्लेस
  1154. 38:41करने वाले हैं किसको? हम रिप्लेस करने
  1155. 38:43वाले हैं अपने आईओसी कंटेनर को। तो इन
  1156. 38:46तीनों डायग्राम्स में यहां पे मेन की जगह
  1157. 38:48आ जाएगा आईओसी कंटेनर। और वही सारे काम
  1158. 38:50करेगा। अब उसे कैसे करेगा आईओसी कंटेनर
  1159. 38:52को? कैसे हम आईओसी कंटेनर से हम कैसे
  1160. 38:55इंटैक्ट करेंगे वो सब जानेंगे आने वाले
  1161. 38:57लेक्चर्स में। पर अभी इस लेक्चर का मेन
  1162. 38:59मोटिव था आपको समझाना डिपेंडेंसी इंजेक्शन
  1163. 39:01क्या होता है? आईओसी कंटेनर क्या होता है?
  1164. 39:03और कैसे ये टर्म्स इंडिपेंडेंट है
  1165. 39:05स्प्रिंग से और इनको आप अपने नॉर्मल जावा
  1166. 39:07कोड में भी यूज़ कर सकते हो। राइट? आई होप
  1167. 39:10आपको मजा आया होगा। कुछ ना कुछ सीखने को
  1168. 39:11जरूर मिला होगा। आपसे मिलते हैं नेक्स्ट
  1169. 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.