Palinso ma frameworks ndi malaibulale ambiri a Java, chifukwa chinenerochi ndi zaka zoposa 15. Panthawiyi, zonse zomwe zingathe kulembedwa zinalembedwapo, kotero pali matani a malaibulale pazomwe mungafunike.
Ndi maluso ati oyambira, m'malingaliro anga, omwe wosewera wa JA ayenera kukhala nawo? Choyamba, ichi ndi chidziwitso cha chinenero cha Java core. Chotsatira ndi mtundu wina wa Dependency Injection framework. Wokamba nkhani wotsatira, Kirill, alankhula za izi mokwanira. Sindidzazama kwambiri. Chotsatira ndi mapangidwe ndi mapangidwe. Tiyenera kulemba zilembo zokongola kuti tilembe ntchito zazikulu. Ndipo uwu ndi mtundu wina wa SQL kapena ORM wa ntchito zogwirira ntchito ndi nkhokwe. Ndipo izi zimagwiranso ntchito ku backend.
Pitani! Java core. Sindipeza America pano-muyenera kudziwa chilankhulocho. Zomwe muyenera kulabadira. Choyamba, Java yatulutsa matembenuzidwe ambiri m'zaka zaposachedwa, ndiye kuti, mu 2014-2015 lachisanu ndi chiwiri linatulutsidwa, ndiye lachisanu ndi chitatu, lachisanu ndi chinayi, lakhumi, matembenuzidwe ambiri atsopano, ndi zinthu zambiri zatsopano zozizira zinayambitsidwa mwa iwo. , mwachitsanzo, Java Stream API , lambda, etc. Zinthu zozizira kwambiri, zatsopano, zozizira zomwe zimagwiritsidwa ntchito popanga ma code, zomwe amafunsa pazokambirana ndi zomwe muyenera kuzidziwa. Chifukwa chake, simuyenera kutenga buku kuchokera pa alumali mulaibulale ya Java-4 ndikupita kukaphunzira. Ili ndiye dongosolo lathu: timaphunzira Java-8 kapena kupitilira apo.
Timatchera khutu ku zatsopano monga Stream API, var, etc. Amafunsidwa panthawi yofunsa mafunso ndipo amagwiritsidwa ntchito nthawi zonse popanga. Ndiko kuti, Stream API ndiyozizira kwambiri kuposa malupu, kawirikawiri, chinthu chozizira kwambiri. Onetsetsani kuti mwatcheru.
Ku Java, kuwonjezera pa SQL, pali mitundu yonse yamapu amtundu wa Object-relational monga JPA. Pali code. Mu njira yoyamba pali SQL code - SINANI id dzina KUCHOKERA info.users PALI id IN userIds. Kuchokera ku database ya ogwiritsa ntchito, kuchokera patebulo, ma ID awo ndi mayina amapezedwa.
Kenako, pali mapu ena omwe amasintha chinthu kuchokera pansi kukhala chinthu cha Java. Ndipo pali njira yachitatu m'munsimu yomwe imachitira izi. Zonsezi zitha kusinthidwa pogwiritsa ntchito JPA ndi mzere umodzi, womwe walembedwa pansipa. Imachita zomwezo - pezani Zonse ByIdIn. Ndiye kuti, kutengera dzina la njirayo, imakupatsirani funso la SQL kwa inu.
Kasupe. Ndani adamvapo za chinthu chonga Spring framework? Mukuwona kuti muli angati? Osati popanda chifukwa. Spring ikuphatikizidwa pazofunikira pagawo lililonse lachiwiri la Java backend. Popanda izo, palibe paliponse mu chitukuko chachikulu. Kodi Spring ndi chiyani? Choyamba, ichi ndi chimango cha Dependency Injection. Za izinso adzanena wokamba wotsatira. Koma mwachidule, ichi ndi chinthu chomwe chimakupatsani mwayi wosavuta kuitanitsa kudalira kwa makalasi ena kwa ena. Ndiko kuti, kudziwa za kudalira kumakhala kosavuta.
Spring Boot ndi chidutswa cha Spring chomwe chimakupatsani mwayi woyendetsa pulogalamu yanu ya seva ndi batani limodzi. Mukapita ku THID, dinani mabatani angapo, ndipo tsopano muli ndi pulogalamu yanu ya seva yomwe ikuyenda pa localhost 8080. Ndiko kuti, simunalembe mzere umodzi wa code pano, koma ukugwira ntchito kale. Chinthu chokoma kwambiri. Ngati mulemba chinachake chanu, moto!
Spring ndi chimango chachikulu kwambiri. Sikuti imangotenga pulogalamu yanu ya seva ndikukhazikitsa Dependency Injection. Zimakulolani kuchita zinthu zambiri, kuphatikizapo kupanga njira za REST API. Ndiye kuti, mudalemba njira ina ndikuyikapo ndemanga ya Pezani mapu. Ndipo tsopano muli ndi njira ina pa localhost yomwe imakulemberani Hello world. Mizere iwiri ya code ndipo imagwira ntchito. Zinthu zabwino.
Spring imapangitsanso kulemba mayeso kukhala kosavuta. Palibe njira popanda kuyesa mu chitukuko chachikulu. Khodiyo iyenera kuyesedwa. Pachifukwa ichi, Java ili ndi laibulale yozizira JUnit 5. Ndipo JUnit ambiri, koma mtundu waposachedwa ndi wachisanu. Pali chilichonse choyesa, zongopeka zamitundu yonse ndi zina.
Ndipo pali mawonekedwe odabwitsa a Mockito. Tangoganizani kuti muli ndi magwiridwe antchito omwe mukufuna kuyesa. Kugwira ntchito kumachita zinthu zambiri, kuphatikizapo, kwinakwake pakati, kumalowetsa VKontakte ndi ID yanu, mwachitsanzo, ndikulandira dzina loyamba ndi lomaliza la wosuta VKontakte kuchokera ku ID. Mwinamwake simungaphatikizepo VKontakte mu mayesero, ndizodabwitsa. Koma muyenera kuyesa magwiridwe antchito, kotero mudapanga kalasi iyi, pogwiritsa ntchito Mockito, mok, kutsanzira.
Mudzanena kuti pempho likadzafika ku kalasi ili ndi chidziwitso chotere ndi chakuti, chimabweretsa dzina lomaliza, mwachitsanzo, Vasya Pupkin. Ndipo izo zigwira ntchito. Ndiye kuti, mudzayesa magwiridwe antchito onse a mok kalasi imodzi. Chinthu chokoma kwambiri.
Ndipo mpaka mutawona muzochita za munthu wina malo omwe ndondomekoyi ikugwiritsidwa ntchito, simungathe kuigwiritsa ntchito nokha. Choncho, kuchita ndi kofunika kwambiri ndi machitidwe. Ndipo kungowerenga za iwo pa refactoring.guru sizothandiza kwambiri, koma ndikofunikira kuchita.
N'chifukwa chiyani zitsanzo zili zofunika? Tiyerekeze kuti muli ndi gulu linalake la Ogwiritsa. Ili ndi Id ndi Dzina. Wogwiritsa ntchito aliyense ayenera kukhala ndi Id ndi Dzina. Pamwamba kumanzere ndi kalasi.
Njira zoyambira Ogwiritsa ntchito ndi ziti? Pali njira ziwiri - womanga kapena setter. Kodi kuipa kwa njira zonsezi ndi chiyani?
Womanga. Wogwiritsa ntchito watsopano (7, "Bond"), chabwino. Tsopano tiyeni tinene kuti tilibe kalasi ya Ogwiritsa, koma ina, yokhala ndi magawo asanu ndi awiri. Mudzakhala ndi womanga wokhala ndi manambala asanu ndi awiri otsatizana. Sizikudziwika kuti manambalawa ndi ati komanso kuti ndi yandani. Wopangayo si wamkulu.
Njira yachiwiri ndi setter. Mukulemba momveka bwino: setId (7), setName ("Bond"). Mumamvetsetsa kuti ndi katundu wanji. Koma setter ali ndi vuto. Choyamba, mutha kuyiwala kugawa china chake, ndipo chachiwiri, chinthu chanu chimakhala chosinthika. Izi sizotetezeka ulusi ndipo zimachepetsa pang'ono kuwerenga kwa code. Ndicho chifukwa chake anthu adabwera ndi chitsanzo chabwino - Womanga.
Ndi chiyani ichi? Tiyeni tiyese kuphatikiza ubwino wa njira zonse ziwiri-setter ndi omanga-mu imodzi. Timapanga chinthu china, Womanga, chomwe chidzakhalanso ndi minda ya Id ndi Dzina, yomwe yokha idzamangidwa motsatira setter, ndipo idzakhala ndi Njira Yomanga yomwe imakubwezerani Wogwiritsa ntchito watsopano ndi magawo onse. Timapeza chinthu chosasinthika ndi setter. Zabwino!
Mavuto ndi chiyani? Pano tili ndi Zomangamanga zapamwamba. Vuto ndiloti tikhoza kuiwala kuyang'ana malo ena. Ndipo ngati tinayiwala kukaona ID, mu nkhaniyi mu Builder imayambitsidwa mpaka zero, chifukwa mtundu wa int sungathe kusinthidwa. Ndipo ngati tipanga Dzinalo "Bond" ndikuyiwala kupita ku ofesi ya ID, tidzakhala ndi Wogwiritsa ntchito watsopano ndi id "0" ndi dzina "Bond". Osati zabwino.
Tiyeni tiyese kulimbana ndi izi. Mu Builder tidzasintha int kukhala int kuti ikhale yosatheka. Tsopano zonse nzabwino.
Ngati tiyesa kupanga Wogwiritsa ndi dzina lakuti "Bond", kuiwala kuyika ID yake, tidzapeza kusiyana kwa null pointer, chifukwa ID sichitha, ndipo Womangayo ali ndi null, makamaka pointer.
Koma titha kuyiwalabe kuyika dzina, kotero timayika chinthu chobwereza kuti chitha. Tsopano, tikamanga chinthu chathu kuchokera ku Builder, chimayang'ana kuti gawolo silingatheke. Ndipo si zokhazo.
Muyenera kuponya cholakwika osati panthawi yopanga Ogwiritsa, koma mukayika null ku ID. Chifukwa chake, mu Builder tidzasintha setter Integer kukhala int, ndipo adzalumbira nthawi yomweyo kuti adataya zopanda pake.
Mwachidule, mfundo yake ndi yotani? Pali njira yosavuta yomanga, koma ngakhale kukhazikitsa kwake kuli ndi zidziwitso zina, kotero ndizosangalatsa kwambiri kuyang'ana machitidwe osiyanasiyana. Mtundu uliwonse uli ndi machitidwe ambiri. Izi zonse nzosangalatsa kwambiri.
Kodi timalemba bwanji Builder mu code yopanga? Nayi Wogwiritsa wathu. Timalumikiza kasinthasintha wa Builder kuchokera ku laibulale ya Lombok kwa iyo, ndipo iyo yokha imapanga Womanga kwa ife. Ndiko kuti, sitilemba kachidindo kalikonse, koma Java akuganiza kale kuti kalasi ili ndi Womanga, ndipo tikhoza kuyitcha motere.
Ndanena kale kuti Java ili ndi malaibulale pafupifupi chilichonse, kuphatikiza Lombok, laibulale yabwino yomwe imakupatsani mwayi wopewa kulemba zolemba. Womanga, GET.
Zitsanzo zikhoza kukhala zomangamanga - zokhudzana ndi kalasi imodzi yokha, koma dongosolo lonse. Pali mfundo yabwino kwambiri yopangira dongosolo: Single Responsibility Principle. Kodi akunena chiyani? Mfundo yakuti kalasi iliyonse iyenera kukhala ndi udindo pazochita zake. Pankhaniyi, tili ndi Wolamulira yemwe amalumikizana ndi ogwiritsa ntchito, zinthu za JSON. Pali Facade, yomwe imasintha zinthu za JSON kukhala zitsanzo zomwe pulogalamu ya Java idzagwira ntchito. Pali Utumiki womwe uli ndi malingaliro ovuta omwe amagwira ntchito ndi zitsanzozi. Pali Data Access Object yomwe imayika zitsanzozi mu database ndikuzitenga kuchokera ku database. Ndipo pali database yokha. Mwa kuyankhula kwina, si onse mu kalasi imodzi, koma tikupanga makalasi asanu osiyana, ndipo ndi chitsanzo china.
Mukangophunzira pang'ono Java, ndibwino kuti mulembe pulojekiti yanu yomwe idzakhala ndi nkhokwe, kugwira ntchito ndi ma API ena, ndikuwonetsa pulogalamu yanu ya seva kwa makasitomala a REST API. Ichi chingakhale chinthu chachikulu kuti muwonjezere kuyambiranso kwanu, kungakhale mapeto abwino a maphunziro anu. Ndi izi mutha kupita kukapeza ntchito.
Nachi chitsanzo cha ntchito yanga ya seva. M'chaka changa chachiwiri, ndinalemba pepala lachidule ndi anyamata. Iwo anali kulemba pulogalamu yam'manja yokonzekera zochitika. Kumeneko, ogwiritsa ntchito amatha kulowa kudzera pa VKontakte, kuyika malo pamapu, kupanga zochitika, kuyitanira anzawo, kusunga zithunzi za zochitika, ndi zina zotero.
Ndinachita chiyani mu polojekitiyi? Analemba ntchito ya seva mu Spring Boot osagwiritsa ntchito SQL. Sindimamudziwa, ndimagwiritsa ntchito JPA. Kodi izo zikanakhoza kuchita chiyani? Lowani ku VK kudzera pa OAuth-2. Tengani chizindikiro cha wosuta, pitani ku VK nacho, fufuzani kuti ndi wosuta weniweni. Pezani zambiri za ogwiritsa ntchito kudzera pa VKontakte. Inatha kusunga zambiri mu database, komanso kudzera mu JPA. Sungani mwaluso zithunzi ndi mafayilo ena pamtima pa kompyuta, ndikusunga maulalo ku database. Panthawiyo sindimadziwa kuti pali zinthu za CLOB mu database, kotero ndidachita motere. Panali REST API ya ogwiritsa ntchito, mapulogalamu a kasitomala. Ndipo panali mayeso a mayunitsi a magwiridwe antchito.
[β¦] Chitsanzo chaching'ono cha kuphunzira kwanga kopambana kwa Java. M'chaka changa choyamba ku yunivesite, ndinaphunzitsidwa C # ndikumvetsetsa za mapulogalamu a OOP - ndi makalasi otani, malo olumikizirana, kutulutsa, komanso chifukwa chake amafunikira. Zinandithandiza kwambiri. Popanda izi, kuphunzira Java ndikovuta; sizikudziwika chifukwa chake makalasi amafunikira.
M'chaka chachiwiri ku yunivesite, adaphunzitsanso Java pachimake, koma sindinayime pamenepo, ndinapita kukaphunzira Spring ndekha ndikulemba pepala la maphunziro, ntchito yanga, yomwe ndatchula pamwambapa. Ndipo ndi zonsezi, ndinapita ku internship ku Yandex, ndinadutsa kuyankhulana, ndipo ndinalowa mu Yandex.Market. Kumeneko ndinalemba kumbuyo kwa Beru, iyi ndi msika wathu, ndi Yandex.Market yokha.
Pambuyo pake, miyezi isanu ndi umodzi yapitayo, ndidasamukira ku gulu lina mkati mwa Msika womwewo. Timasanthula ma analytics a mabizinesi. Tili papulatifomu yowunikira, pali atatu aife kumbuyo, kotero ndili ndi gawo lalikulu kwambiri pantchitoyo. Ndizosangalatsa kwambiri, kwenikweni. Ndiko kuti, timaperekadi deta pamsika - zomwe malonda ali, m'magulu ati, ndi zitsanzo ziti, kwa ogwira nawo ntchito, makampani akuluakulu odziwika bwino. Ndipo ndife atatu okha, timalemba izi, ndipo ndizozizira kwambiri.