JavaRush /جاوا بلاگ /Random-SD /بهار سستن لاءِ آهي. بنيادي، بنيادي تصور ۽ ڪوڊ سان مثال. ح...

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

گروپ ۾ شايع ٿيل
ڪيترائي ماڻهو، ويب پراجيڪٽ لاءِ ٽيمپليٽ ٺاهڻ ۽ servlets استعمال ڪندي هڪ سادي ويب سروس ٺاهڻ بابت منهنجا آرٽيڪل پڙهڻ کان پوءِ ، حيران ٿي ويا ته مان بهار جي باري ۾ ڪڏهن لکندس. مون نه ٿي چاهيو، مون هڪ ڪتاب پڙهڻ جي صلاح ڏني (۽ مان اڃا به چوان ٿو ته هڪ ڪتاب 10 کان بهتر آهي، يا انٽرنيٽ تي 100 مضمونن کان به بهتر آهي). پر هاڻي مون فيصلو ڪيو آهي ته هڪ ئي شيءِ کي مختلف ماڻهن کي بيان ڪرڻ ۾، مان ان کان وڌيڪ وقت گذاريان ٿو جو مان هڪ ڀيرو ويهان ۽ هڪ مضمون لکان، ۽ پوءِ صرف ان جي لنڪ پوسٽ ڪريان. تنهنڪري مان لنڪ جي خاطر لکي رهيو آهيان)). بهار سستن لاءِ آهي.  بنيادي، بنيادي تصور ۽ ڪوڊ سان مثال.  حصو 1 - 1هن آرٽيڪل ۾ مان نه لکندس ته ڪيئن بهار ۾ ڪم ڪندڙ پروجيڪٽ 5 منٽن ۾ منهنجي مثال جي پٺيان. مان صرف بنيادي شين جي باري ۾ لکندس، جن جي ڄاڻ کان سواء اهو ممڪن آهي ته هڪ منصوبو شروع ڪرڻ ممڪن آهي، پر اتي ڇا ٿي رهيو آهي، ۽، سڀ کان اهم، ڇو، واضح نه ٿيندو.

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

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

ساخت

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

جاوا ۾ بهار ڇو؟

خير، ان حقيقت کان علاوه ته اهو فيشني، سجيل ۽ جوان آهي، مان فوري طور تي چئي سگهان ٿو ته جيئن توهان ان ۾ ٿوري مهارت حاصل ڪندا، توهان سمجهي ويندؤ ته هاڻي توهان کي ڪيترو مختلف ڪم ڪرڻ جي ضرورت ناهي، ۽ ڪيترو بهار آهي. وٺندو آهي. توھان لکي سگھوٿا ڪجھ درجن جون لائينون ترتيبن جون، لکي سگھوٿا ڪجھ طبقا - ۽ توھان کي ڪم ڪندڙ پروجيڪٽ ملندو. پر جيئن ئي توهان سوچڻ شروع ڪيو ته ”هوڊ هيٺ“ ڪيترو آهي، ڪيترو ڪم ٿي رهيو آهي، ۽ ڪيترو ڪوڊ لکڻو پوندو جيڪڏهن توهان ساڳيو پروجيڪٽ بيئر سروليٽس يا ساکٽس ۽ خالص جاوا تي ڪيو. - توهان جا وار آخر تي بيٺا آهن :) اتي به اهڙو اظهار آهي، جهڙوڪ بهار جي "جادو". اهو تڏهن آهي جڏهن توهان ڏسندا آهيو ته سڀ ڪجهه ڪم ڪري رهيو آهي، پر توهان اندازو لڳايو ته هر شيءِ جي ڪم ڪرڻ لاءِ اتي ڪيترو ٿيڻ گهرجي ۽ اهو سڀ اتي ڪيئن ڪم ڪري ٿو - پوءِ اهو لڳي ٿو ته اهو سڀ ڪجهه ڪنهن قسم جي جادو جي مهرباني سان ٿي رهيو آهي)) اهو آسان آهي. ان کي سڀ جادو سڏڻ بجاءِ وضاحت ڪرڻ جي ڪوشش ڪريو ته اهو سڀ اتي ڪيئن جڙيل آهي. مسڪراهٽ data_ web-mvc_ security_ صرف بنياديات.

DI/IoC

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

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

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

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

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