CodeGym /جاوا بلاگ /Random-SD /سست ماڻهن لاءِ بهار فائونڊيشن، بنيادي مفهوم، ۽ ڪوڊ سان مث...
John Squirrels
سطح
San Francisco

سست ماڻهن لاءِ بهار فائونڊيشن، بنيادي مفهوم، ۽ ڪوڊ سان مثال. حصو 1

گروپ ۾ شايع ٿيل
سست ماڻهن لاءِ بهار فائونڊيشن، بنيادي مفهوم، ۽ ڪوڊ سان مثال.  حصو 1 - 1هن آرٽيڪل ۾، مان توهان کي اهو نه ٻڌائڻ وارو آهيان ته ڪيئن ڪم ڪندڙ اسپرنگ پروجيڪٽ کي حاصل ڪجي ۽ 5 منٽن ۾ منهنجو ڪوڊ استعمال ڪندي. مان صرف بنيادي ڳالھيون لکڻ وارو آھيان - اھي شيون جيڪي توھان جاھل ٿي سگھن ٿيون ۽ اڃا تائين ھڪڙو منصوبو ٺاھيو. پر هن آرٽيڪل ۾، توهان اڃا تائين نه سمجهي سگهندا ته ڇا ٿي رهيو آهي ۽، وڌيڪ اهم، ڇو.

بهار جو فريم ورڪ ڇا آهي؟

اسپرنگ فريم ورڪ، يا بس اسپرنگ، جاوا ۾ ويب ايپليڪيشن ٺاهڻ لاءِ مشهور فريم ورڪ مان هڪ آهي. هڪ فريم ورڪ هڪ لائبريري وانگر آهي (شايد توهان هن اصطلاح سان وڌيڪ واقف آهيو)، پر غور ڪرڻ لاء ڪجهه آهي. عام طور تي ڳالهائڻ، جڏهن توهان لائبريري استعمال ڪندا آهيو، توهان صرف انهن ڪلاسن جا مثال ٺاهيندا آهيو جيڪي ان ۾ شامل آهن، انهن طريقن کي ڪال ڪريو جيڪي توهان کي گهربل آهن، ۽ اهڙيء طرح توهان کي گهربل نتيجو حاصل ڪريو. ٻين لفظن ۾، اهو وڌيڪ لازمي طريقو آهي: توهان جي پروگرام ۾، توهان واضح طور تي مخصوص لمحن جي نشاندهي ڪندا آهيو جڏهن توهان کي ڪهڙي شئي ٺاهڻ جي ضرورت آهي، ڪهڙي مخصوص طريقي سان، وغيره. فريم ورڪ سان، شيون ڪجهه مختلف آهن. توهان صرف پنهنجا ڪجهه طبقا لکو ۽ انهن ۾ ڪجهه منطق لکو، پر پوءِ فريم ورڪ پاڻ توهان جي طبقن جا مثال ٺاهي ٿو ۽ انهن جي طريقن کي سڏي ٿو. توھان جا ڪلاس عام طور تي فريم ورڪ مان ڪجھ انٽرفيس تي عمل ڪندا آھن يا ان جي ڪجھ ڪلاسن کي ورثي ۾ رکندا آھن، اھڙيءَ طرح توھان کي ڪجھ ڪارڪردگي مهيا ڪندا آھن جيڪي توھان لاءِ اڳ ۾ ئي لکيل آھن. پر اهو هميشه نه آهي. مثال طور، اسپرنگ جيترو ممڪن ٿي سگهي ڪوشش ڪري ٿو ته اهڙي تنگ جوڙي کان بچڻ لاءِ (جتي توهان جا ڪلاس سڌو سنئون فريم ورڪ ۾ ڪلاس/انٽرفيس تي ڀاڙين ٿا). اهو حاصل ڪرڻ لاء تشريح استعمال ڪري ٿو. اسان ان کي بعد ۾ واپس ڪنداسين. پر اهو سمجهڻ ضروري آهي ته بهار صرف ڪلاسن ۽ انٽرفيس جو هڪ مجموعو آهي جيڪي توهان لاءِ استعمال ڪرڻ لاءِ موجود آهن :) مان اهو پڻ نوٽ ڪرڻ چاهيان ٿو ته بهار نه رڳو ويب ايپليڪيشنن لاءِ، پر عام ڪنسول پروگرامن لاءِ پڻ استعمال ڪري سگهجي ٿو. جيڪي اسان سڀني کان واقف آهن. ۽ اسان اڄ به انهن مان هڪ لکنداسين.

ساخت

پر بهار صرف هڪ خاص فريم ورڪ ناهي. بلڪه، اهو هڪ عام نالو آهي جيڪو ڪيترن ئي ننڍڙن فريم ورڪ جي حوالي سان استعمال ڪيو ويندو آهي، جن مان هر هڪ پنهنجي قسم جو ڪم ڪندو آهي. سست ماڻهن لاءِ بهار فائونڊيشن، بنيادي مفهوم، ۽ ڪوڊ سان مثال.  حصو 1 - 2

https://docs.spring.io/spring/docs/4.3.26.RELEASE/spring-framework-reference/htmlsingle/
شڪل 2.1. بهار جي فريم ورڪ جو جائزو

جئين توهان ڏسي سگهو ٿا، بهار ماڊلر آهي. هي اسان کي صرف انهن ماڊلز کي ڳنڍڻ جي اجازت ڏئي ٿو جيڪي اسان کي اسان جي ايپليڪيشن لاءِ گهربل آهن ۽ انهن کي ڳنڍڻ نٿا ڏين جيڪي اسان واضح طور تي استعمال نه ڪنداسين. جيتري قدر مون کي خبر آهي، اهو اهو طريقو هو جيڪو بهار کي پنهنجي مقابلي ۾ (EJB) کي اڳتي وڌايو ۽ اڳواڻي وٺي. EJB استعمال ڪندي ايپليڪيشنن انهن جي پويان تمام گهڻو انحصار ڇڪايو، ۽ نتيجي طور، اهي سست ۽ سست ٿي ويا. تصوير ڏيکاري ٿو ته بهار فريم ورڪ ڪيترن ئي ماڊلز تي مشتمل آهي:
  • ڊيٽا جي رسائي
  • ويب
  • ڪور
  • ۽ وڌيڪ
اڄ اسان مکيه ماڊل ۾ مليل ڪجهه تصورن کان واقف ٿينداسين: لوبيا، حوالي، ۽ ٻيا. جيئن توهان اندازو لڳايو هوندو، ڊيٽا جي رسائي ماڊل ۾ ڊيٽا سان ڪم ڪرڻ جا اوزار شامل آهن (بنيادي طور تي ڊيٽابيس)، ۽ ويب ماڊل هڪ نيٽ ورڪ تي ڪم ڪرڻ لاءِ آهي (بشمول ويب ايپليڪيشن ٺاهڻ، جنهن تي بعد ۾ بحث ڪيو ويندو). ان کان علاوه، هڪ جامع انفراسٽرڪچر آهي جيڪو بهار جي حمايت ڪري ٿو: ٻيا ڪيترائي منصوبا جيڪي سرڪاري طور تي فريم ورڪ ۾ شامل نه آهن، پر توهان جي اسپرنگ پروجيڪٽ ۾ بيحد ضم ٿي ويا آهن (مثال طور، اسپرنگ سيڪيورٽي، جنهن کي مان پڻ رابطو ڪرڻ جي اميد رکي ٿو. ويب سائيٽ تي صارف جي تصديق ڪرڻ).

جاوا وٽ اسپرنگ فريم ورڪ ڇو آهي؟

خير، ان حقيقت کان سواءِ ته اهو فيشني، سليڪ ۽ تازو آهي، مان هن وقت اهو چئي سگهان ٿو ته جيئن ئي توهان بهار جي استعمال سان ٿوري گهڻي مهارت حاصل ڪندا، توهان سمجهي ويندؤ ته هتي هر قسم جا ڪم آهن جيڪي توهان وٽ هاڻي نه آهن. ڪرڻ لاء، ۽ ڪيترو ڪم بهار پاڻ تي وٺندو آهي. توھان لکي سگھوٿا ڪجھ درجن جون لائينون ٺاھڻ جون سيٽنگون ۽ ڪجھ طبقا لکي سگھوٿا، ۽ توھان ھڪڙي ڪم ڪندڙ منصوبي سان ختم ڪريو. پر جيئن ئي توهان سوچڻ شروع ڪيو ته هود جي هيٺان ڪيترو سامان آهي، ڪيترو ڪم ٿي رهيو آهي، ۽ توهان کي ڪيترو ڪوڊ لکڻو پوندو جيڪڏهن توهان ساڳيو پروجيڪٽ تي عمل ڪرڻ وارا آهيو، ساکٽس يا ساکٽس ۽ خالص جاوا جي بنياد تي، توهان جا وار ختم ٿي ويندا :) بهار کي به جادو جي هڪ قسم جي طور تي بيان ڪيو ويو آهي. توهان اهو تجربو تڏهن ڪندا آهيو جڏهن توهان ڏسندا آهيو ته سڀ ڪجهه ڪم ڪري ٿو، پر توهان کي اهو به اندازو آهي ته پردي جي پويان ڪيئن ۽ ڪيترو ڪم ٿي رهيو آهي - تنهنڪري اهو لڳي ٿو ته واقعي عمل ۾ ڪنهن قسم جو جادو آهي :) ان کي جادو سڏڻ آسان آهي. انهي جي وضاحت ڪرڻ جي ڪوشش ڪرڻ کان علاوه اهو سڀ ڪجهه ڪيئن ڳنڍيل آهي. :) اسپرنگ جي مطالعي جي حق ۾ ٻيو دليل اهو آهي ته جونيئر ڊولپرز (منهنجي ذاتي مشاهدن جي بنياد تي) لاءِ تقريباً 90% نوڪريءَ جو افتتاح (منهنجي ذاتي مشاهدي جي بنياد تي) جي ضرورت آهي يا ته ڄاڻ يا گهٽ ۾ گهٽ هڪ عام خيال جي ته ڇا بهار، ۽ ماڊلز پيش ڪن ٿا Dataنفيس Web MVCڊولپرز Security:) پر اڄ صرف بنيادي ڳالهين بابت آهي.

DI/IoC

جيڪڏهن توهان ڪڏهن به بهار جي باري ۾ پڙهڻ جي ڪوشش ڪئي آهي، ته پوءِ پهرين شيءِ جيڪا توهان کي سامهون آئي، شايد اهي اهي مخفف هئا: DI/IoC. ھاڻي مان ھاڻي سفارش ڪريان ٿو ته توھان ھن مضمون مان ھڪڙو وقفو وٺو ۽ ھي DZone مضمون پڙھو ! IoC جو مطلب آهي ڪنٽرول جي ڦيرڦار. ان جو ذڪر مون اڳ ۾ ئي ڪيو آهي جڏهن مون لکيو هو ته لائبريري استعمال ڪرڻ ۾ توهان پاڻ پنهنجي ڪوڊ ۾ اشارو ڪيو ته ڪهڙي طريقي سان ڪهڙي شئي تي ڪال ڪجي، پر عام طور تي فريم ورڪ استعمال ڪرڻ جو مطلب اهو آهي ته فريم ورڪ توهان جي ڪوڊ کي صحيح وقت تي ڪال ڪندو. ٻين لفظن ۾، هن پوئين صورت ۾، توهان هاڻي ڪوڊ/پروگرام تي عمل ڪرڻ جي عمل کي منظم نه ڪري رهيا آهيو - فريم ورڪ اهو توهان لاءِ ڪندو آهي. توهان فريم ورڪ تي ڪنٽرول پاس ڪيو (ڪنٽرول جي ڦيرڦار). DI جو مطلب آهي انحصار انجيڪشن . انحصار انجيڪشن سان، توهان بنيادي طريقي سان ٻلي شيون نه ٺاهي ۽ پوء انهن کي توهان جي طريقن ڏانهن منتقل ڪريو. ان جي بدران، اسپرنگ فريم ورڪ انهن کي توهان لاء ٺاهي ٿو. توهان صرف ڪجهه چئو ٿا جهڙوڪ "مان هتي هڪ ٻلي حاصل ڪرڻ چاهيان ٿو" ۽ فريم ورڪ توهان جي طريقي سان توهان ڏانهن منتقل ڪري ٿو. اسان هن مخفف کي ايندڙ مضمونن ۾ ڏسنداسين.

ڀاڄيون ۽ حوالا

بهار ۾ اهم تصورن مان هڪ هڪ لوبان آهي. حقيقت ۾، اهو صرف ڪجهه طبقي جو هڪ اعتراض آهي. فرض ڪريو اسان وٽ ھڪڙو پروگرام آھي جنھن لاءِ 3 شيون گھرجن: ھڪ ٻلي، ھڪ ڪتو ۽ ھڪڙو طوطا. ۽ اسان وٽ طبقن جو ھڪڙو گروپ آھي طريقن جي ھڪڙي گروپ سان. ڪڏهن ڪڏهن اسان کي ڪنهن طريقي لاءِ ٻلي جي ضرورت هوندي آهي، ڪڏهن ڪڏهن اسان کي مختلف طريقي لاءِ ڪتي جي ضرورت هوندي آهي، ۽ ڪڏهن ڪڏهن اسان جي طريقن کي ٻلي ۽ طوطي ٻنهي جي ضرورت هوندي آهي (مثال طور، ٻلي کي کارائڻ جو طريقو، ها-ها). اڃا به ٻين طريقن لاء، سڀني ٽن شين جي ضرورت آهي. ها، اسان پهريان اهي ٽي شيون ٺاهي سگهون ٿا مکيه طريقي سان، ۽ پوءِ انهن کي پنهنجي ڪلاسن ۾ پاس ڪريون، ۽ پوءِ انهن ڪلاسن ۾ انهن کي لاڳاپيل طريقن ڏانهن منتقل ڪريون... ۽ ائين ئي سڄي پروگرام ۾. پر جيڪڏهن اسان اهو به سمجهون ٿا ته اسان ڪڏهن ڪڏهن پنهنجي طريقن لاءِ ان پٽ پيرا ميٽرن جي لسٽ کي تبديل ڪرڻ چاهيون ٿا (مثال طور، اسان فيصلو ڪريون ٿا ڪنهن شيءِ کي ٻيهر لکڻ يا نئين ڪارڪردگي شامل ڪرڻ)، ته پوءِ اسان کي ڪوڊ ۾ ڪافي تبديليون ڪرڻيون پونديون. ۽ هاڻي تصور ڪريو ته اسان وٽ 3 نه، پر 300 اهڙيون شيون آهن. ھڪڙو متبادل اھو آھي ته اسان جي سڀني شين کي ھڪڙي فهرست ۾ گڏ ڪيو وڃي ( List<Object>)، ان کي ھر طريقي سان پاس ڪريو، ۽ پوء طريقن جي اندر اندر ضروري اعتراض حاصل ڪريو. پر جيئن پروگرام هلندو آهي، ڇا ٿيندو جيڪڏهن ڪجهه اعتراض هن لسٽ ۾ شامل ڪيو وڃي، يا بدترين، ڇا ٿيندو جيڪڏهن هڪ کي ختم ڪيو وڃي؟ اهو هر طريقي کي ٽوڙڻ جي صلاحيت آهي جتي اسان فهرست مان شيون حاصل ڪرڻ لاء انڊيڪس استعمال ڪندا آهيون. هن مسئلي کان بچڻ لاءِ، اسان فيصلو ڪريون ٿا ته اسان جون شيون هڪ فهرست ۾ نه، پر هڪ نقشي ۾، جتي ڪنجي شئي جو نالو آهي ۽ قدر خود اعتراض آهي. هي اسان کي انهن شين کي ٻيهر حاصل ڪرڻ جي اجازت ڏئي ٿو جن جي اسان کي ضرورت آهي صرف انهن جو نالو استعمال ڪندي، مثال طور get("parrot")، ۽ جواب ۾ اسان کي parrot اعتراض ملي ٿو. يا ڪنجي ٿي سگهي ٿي اعتراض جو طبقو، ۽ قدر ٿي سگهي ٿو پاڻ کي اعتراض. انهي حالت ۾، اعتراض جي نالي جي وضاحت ڪرڻ بجاء، پر صرف اسان کي ضرورت آهي اعتراض جي طبقي کي مخصوص ڪري سگهون ٿا. اهو پڻ آسان آهي. يا اسان نقشي لاءِ ڪي قسم جا ريپر به لکي سگهون ٿا، جتي ڪي طريقا شيون حاصل ڪن ٿا انهن جي نالي سان، ۽ ٻيا طريقا شيون حاصل ڪن ٿا انهن جي طبقي سان. جيڪو اسان هتي پهچي چڪا آهيون ان کي اسپرنگ فريم ورڪ ۾ ايپليڪيشن جي حوالي سان سڏيو ويندو آهي. هڪ حوالو شينهن جو مجموعو آهي (شيون). اسان هڪ حوالن تائين پهچون ٿا حاصل ڪرڻ لاءِ جنهن کي اسان کي ضرورت آهي ان جي نالي سان، ان جي قسم سان، يا ڪنهن ٻئي طريقي سان. اضافي طور تي، اسان بهار پاڻ کان پڇي سگھون ٿا ته ان جي پنهنجي تناظر ۾ ڏسڻ لاءِ جنهن کي اسان جي ضرورت آهي ۽ ان کي اسان جي طريقي سان منتقل ڪيو وڃي. مثال طور، فرض ڪريو اسان وٽ ھڪڙو طريقو ھي آھي:
public void doSomething(Cat cat) {
    ...
}
جڏهن بهار هن طريقي کي سڏيو، اهو اسان جي ٻلي اعتراض کي ان جي حوالي سان ورتو ۽ ان کي طريقي سان منتقل ڪيو. پر هاڻي اسان اهو فيصلو ڪيو آهي ته، ٻلي کان علاوه، اسان جي طريقي کي هڪ طوطي جي ضرورت آهي. بهار سان، ڪجھ به آسان نه ٿي سگهي! اسان صرف لکون ٿا:
public void doSomething(Cat cat, Parrot parrot) {
    ...
}
هاڻي جڏهن بهار اسان جي طريقي کي سڏي ٿو، اهو سمجهي ٿو ته ٻلي ۽ هڪ طوطي کي پاس ڪرڻ جي ضرورت آهي، تنهنڪري اهو ان جي حوالي سان وڃي ٿو، انهن ٻنهي شين کي حاصل ڪري، ۽ انهن کي اسان جي طريقي ڏانهن منتقل ڪري ٿو. ڪنٽرول جي رين کي بهار ڏانهن منتقل ڪرڻ سان، اسان شيون ٺاهڻ ۽ انهن کي اسان جي طريقن ڏانهن منتقل ڪرڻ جي ذميواري پڻ منتقل ڪريون ٿا، جن کي بهار سڏيو ويندو. هي سوال پيدا ڪري ٿو: بهار کي ڪيئن خبر پوي ٿي ته ڪهڙيون شيون (بين) ٺاهڻيون آهن؟

ايپليڪيشن کي ترتيب ڏيڻ جا طريقا

ايپليڪيشن کي ترتيب ڏيڻ جا ٽي مکيه طريقا آهن ، اهو آهي، Spring کي ٻڌائڻ جا طريقا جيڪي شيون اسان کي گهرجن:
  1. XML ترتيب ڏيڻ واريون فائلون
  2. جاوا جي بنياد تي ٺاھ جوڙ
  3. خودڪار ترتيب
بهار جي تخليق ڪندڙ انهن کي هن ترتيب ۾ ترجيح ڏين ٿا:
  • مٿين ترجيح سان طريقو، جنهن کي ترجيح ڏني وڃي، خودڪار ترتيب آهي
  • جيڪڏهن خودڪار ترتيب استعمال نه ٿي ڪري سگھجي ته صحيح طور تي سڀني ممڪنن کي ترتيب ڏيڻ لاءِ، استعمال ڪريو Java-based configuration (جنهن ۾ جاوا ڪوڊ استعمال ڪندي شيون ٺاهڻ شامل آهن)
  • ۽ سڀ کان گھٽ اوليت وارو طريقو پراڻي طريقي سان آھي - استعمال ڪندي XML config فائلون.
بهار اسان کي انهن طريقن کي گڏ ڪرڻ جي اجازت ڏئي ٿو. مثال طور، بهار کي هر شي کي ترتيب ڏيڻ ڏيو جيڪو خودڪار طريقي سان ترتيب ڏئي سگهجي ٿو، استعمال ڪريو Java-based configuration جتي توهان کي خاص پيرا ميٽرن جي ضرورت آهي، ۽ XML استعمال ڪريو ڪنهن به ورثي جي جوڙجڪ لاءِ. اهو سڀ ڪجهه ڪم ڪري ٿو ڪافي لچڪدار. اڃا، جيڪڏهن هر شي خودڪار طريقي سان ترتيب ڏئي سگهجي ٿي، اهو اختيار چونڊيو. مان صرف خودڪار ترتيب ۽ جاوا جي بنياد تي ترتيب ڏيڻ تي غور ڪندس. XML ترتيبون انٽرنيٽ تي بهار جي لڳ ڀڳ هر مثال ۾ استعمال ٿينديون آهن. وڌيڪ ڇا آهي، هڪ دفعو توهان سمجھو ٿا ته جاوا تي ٻڌل ترتيب ڪيئن ڪم ڪري ٿي، توهان کي هڪ XML فائل پڙهڻ ۾ ڪو مسئلو ناهي جيڪو ساڳيو ڪم ڪري ٿو. خودڪار ٺاھ جوڙ استعمال ڪيو ويندو آھي جڏھن اسان کي ڪم ڪرڻ جي ضرورت آھي ڪلاس جي شين سان جيڪو اسان لکيو آھي. جيڪڏهن اسان جي شين مان هڪ ٺاهڻ لاء ڪجهه خاص منطق جي ضرورت آهي، يا جيڪڏهن اسان خودڪار ترتيب ڏيڻ لاء ضروري تشريح سان ڪجهه ڪلاس ٺاهڻ ۾ ناڪام آهيون، ته پوء اسان جاوا تي ٻڌل ترتيب استعمال ڪري سگهون ٿا جيڪو ڪرڻ جي ضرورت آهي. ايندڙ حصي ۾ ، اسان هڪ Maven پروجيڪٽ ٺاهينداسين، ڪجهه مکيه اسپرنگ ماڊلز کي ڳنڍينداسين، ۽ اسان جي پهرين بينز ٺاهينداسين.
تبصرا
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION