Java taslamasyny döretmek baradaky seriýadan bir makala (beýleki materiallara baglanyşyk ahyrynda). Maksady esasy tehnologiýalary seljermek, netijesi telegramma bot ýazmak. Bu bölümde “SpringBoot” we “Flyway” -lary işe girizmäge synanyşýarys. Nazaryýetiň iň az mukdary, isleýşiňiz ýaly))) “Flyway / Liquibase” -ni belli bir wagta çenli gutarnykly deňeşdirmäni goýup, netijä gelýäris. Şeýle-de bolsa, ol eýýäm çekildi. Uçuşy iki gezek suratlandyrmazlyk üçin, derrew geljekki JRTB taslamamyza goşmagy makul bildim.
taraply, köp modully:
Bu ýerde size zerur zatlary doldurmaly we saýlamaly:
Indi modullary goşalyň. “Flyway” bilen integrasiýa tapmaly. Şeýle hem MySQL we Bahar maglumatlary bilen baglanyşykly bir zat goşup bilersiňiz. Başga bir lombok goşalyň (bu gaty zerur zat, häzirlikçe maňa ynanyň: D)) Munuň üçin ADD DEPENDENCIES düwmesine basyň ... we zerur zatlaryň hemmesini saýlaň:
Flyway-y şeýle goşýarys.
Lombok ... we ş.m. Netijede, alýarys:
Huh ... hemme zady doldurdyk)) Indi GENERATE basyň ... we ine, döredilen taslama bilen arhiw taýýar :) Paýlaşmak ýaly ajaýyp zat hem bar ... , ýaňy dolduran sahypaňyza baglanyşyk berýär. .Agny, ine, meniň döreden zadym . Bir zat ýalňyş bolsa-da, baglanyşygy ulanyp hemişe barlap bilersiňiz. Ondan soň döredilen taslamany Git ammary bilen baglanyşdyrmalydyrys, şonuň üçin döredilen pru springina-uçuş-demo taslamasyny klonlaşdyryp , IDEA arkaly göçürip alarys. Munuň üçin pikiri açmaly we Bar bolan çeşmelerden Faýl -> Täze -> Taslamany saýlamaly ... :
Indi URL goşuň we Klon basyň . Indiki ädim, döredilen taslamanyň içini klonlaşdyran taslamamyzyň içinde geçirmekdir. Bulaşdyňyzmy? Men häzir görkezerin. Men ony açdym we aşakdaky faýllar toplumyny aldym:
Bular klonlaşdyrylan taslama geçirilmeli. Öňki makalada bolşy ýaly, pom.xml-i täze bir taslama hökmünde goşalyň:
Indi biz üçin döredilen zatlara gyzyklanma bildirýäris. Src-de ähli bukjalary açsaňyz, öňki makalada ara alyp maslahatlaşan Maven taslamalarynda adaty iýerarhiýany görersiňiz . Okamadyklar üçin okaň!
Programma synpymyzyň bardygyny görmek bolýar we “SpringBoot” programmamyz ulanyp başlar. “SpringBoot” üçin “Maven” plugininiň kömegi bilen, indi Maven üçin zerur bolan bahar-boot: run. Bu maglumatlary nireden tapyp bileris? Sag tarapda, Maven plastinkasyny we taslamamyzy açmak:
erroralňyşlyk bolar, ony okap bilmeris, şuňa meňzeş bir zady göreris: Has
giňişleýin maglumat almak üçin esasy usuly işledip bileris Programma synpy:
Soň bolsa asyl sebäbini göreris:
Bu ýerde eýýäm has köp maglumat bar we siz onuň bilen bir zat edip bilersiňiz. Näme boldy? Maglumat bazasy bilen baglanyşykly garaşlylyklarymyz bar, şonuň üçin oňa birikmek üçin sazlamalary üpjün etmeli. Munuň üçin google-a girýäris we application.properties-e aşakdaky konfigurasiýalary goşmalydygymyzy görýäris:
Indi azyndan bir göçürme goşmaly. Migrasiýa dogry döretmek üçin aşakdaky şablony almaly: V <VERSION> __ <NAME> .sql Bu şablony ulanyp, degişli bukjada V00001__Create_country_table.sql atly göçürme faýly dörederis : / src / main / resources / db.migrasiýa / . Geliň, onda ýurt tablisasyny döredeliň. Maglumatlar bazasy baradaky ikinji makaladan ssenariý alalyň .
Başlamazdan ozal girip, iş üçin maglumat bazasyny döredeliň: flyway_demo_db. Muny “MysqlWorkbench” -iň üsti bilen edeliň:
Indi esasy usuly täzeden işledip bileris:
Hemme zat netije berdi, ýöne taslamada entek hiç zadymyz ýoklygy sebäpli, ol işledi. Şeýle-de bolsa, surnallardan ( surnallaryň nämedigini okaň ) düşnüklidir:
Garaşyşym ýaly, migrasiýa bolup geçdi, şol döwürde ýurt tablisasy döredildi we migrasiýa barada maglumatlary saklaýan flyway_schema_history tablisasy peýda boldy. Geliň, haýsy ýazgylaryň bardygyny göreliň (we asla ýokmy). $ SELECT * Uçuş ýolundan_şema_history;
Ine, ýazgy. Onda köp gyzykly maglumatlar bar. Wersiýa, göç edilişiň beýany, SQL-iň haýsy görnüşi (we belki-de XML bolmagy mümkin), skriptiň ady, çek ( bu göçürmäniň üýtgändigini ýa-da ýokdugyny barlamak üçin ulanylýan hashkod ýaly bir zat. Bu edildi) maglumatlar bazasynda bir migrasiýa amala aşyran bolsak, soň bolsa düzedildi: bu edilip bilinmez, ähli üýtgeşmeler diňe täze migrasiýa arkaly amala aşyrylýar we munuň ýüze çykmagynyň öňüni almak üçin, barlag mukdary muňa gözegçilik edýär) , ulanyjy sql ady, migrasiýa gaýtadan işlemek senesi, ýerine ýetiriş wagty we netijesi (üstünlikli ýa-da şowsuz). Bir gezek ýazylan göçürme geljekde üýtgedilmeli däldir. Onda kemçilik bar bolsa-da. Changeshli üýtgeşmeler diňe täze göç arkaly amala aşyrylýar. Bu örän möhümdir. Näme boljagyny görkezmek üçin, skriptimizi azajyk üýtgedeliň we täzeden işlemäge synanyşalyň. Migrasiýamyzda ýurt tablisasyna bir ýazgy goşalyň:
esasy usuly işlediň we şuny alýarys:
Garaşyşym ýaly, uçuş ýoly skriptiň üýtgedilendigini we göç etmäni ýerine ýetirmändigini bildi. Käbir ýagdaýlarda täzelenen göçürmäni işletmek zerur bolup biler we uçuş-gonuş zolagyndan geçmek üçin “flyway_schema_history” tablisasyndaky ýazgyny pozmaly we täzelenen göçürmäni işletmeli. Bu adaty häsiýet däl we beýle bolmaly däl, ýöne meseläni çözmegiň bu usuly barada hem bilmeli. Ilkinji göç bilen iş salyşdyk. Indi maglumatlar bazasy baradaky makalada bolşy ýaly ýurtlar barada maglumatlar bilen başga bir migrasiýa goşmak isleýärin: faýl V00002__Add_test_data_to_country.sql
Geliň, esasy usuly täzeden işledeliň:
surnallardan göç ediliş başlamazdan ozal maglumatlar bazasynyň bolandygy düşnüklidir 00001 wersiýasynda, şonuň üçin bu wersiýadan soň ähli göçler. Ondan soň 00002 wersiýasy işe girizildi we üstünlikli boldy. Barlap göreliň, ýa-da ýurtda üç ýazgynyň eýýäm maglumatlar bazasynda boljakdygyna ynanýarsyňyzmy?)) Barlap görerin, şonuň üçin subutnama:
Şuňa meňzeş bir zat. Taslamany täzeden ýerine ýetirseňiz, maglumat bazasy zerur wersiýa doly laýyk gelýändigi sebäpli, uçuş ýoly göçüp-gonup geçer.
Munuň bir bölegi hökmünde näme etmeli?
- Maven esasly “SpringBoot” programmasyny işe giriziň.
- Şol ýere “Flyway” goşuň: bagtymyza, olar aňsat birleşdirilýär.
- Mysal maglumatlar bazasyndaky tablisalar üçin shema goşuň.
Uçuş ýoly näme?
Bir zady ulanmak üçin ilki bilen onuň nämedigini we sebäbini anyklamaly. “Flyway” maglumat bazasynyň wersiýasyna gözegçilik guralydyr. Sözler belli, ýöne nädip düşüniş goşulmady, şeýlemi? Uçuş ýolunyň çözýän meselesini suratlandyrmaga synanyşalyň. Taslamamyz bar diýeliň. Dünýämizdäki hemme zat ýaly, bu birkemsiz däl, şonuň üçin taslamanyň soňky wersiýasyny meýilleşdirmek we düzmek mümkin däldi. Her gezek belli bolmadyk hasaplanylýan nuanslar peýda bolýar. Taslama öz işinde maglumat bazasyny ulanýar. Elbetde, taslama üýtgese, maglumat bazasynyň gurluşy hem üýtgäp biler. Taslamamyzdaky guramalaryň biri üçin täze meýdan goşýarys diýeliň. Muny nädip etmeli?- Bu ugry kärhanamyza goşuň, iş logikasynyň işlemegi üçin hemme zady täzeläň.
- Maglumat bazasyny täzeläň. Possibleeke-täk ýol muny el bilen etmekdir. Munuň üçin girip, zerur sql skriptini hasaba almaly.
- Ouröne taslamamyzy ýerleşdirýän birden köp ýerimiz bar bolsa, bu olaryň hersinde edilmelimi?
- yza gaýdyp gelmek islesek, maglumatlar bazasynyň gurluşynyň häzirki ýagdaýyny nädip bilýäris?
- Maglumatlar bazasynyň üýtgemeginiň üstünlikli bolandygyna nädip ynanmaly?
- Taslamada bolup geçen maglumatlar bazasynyň üýtgemelerini yzarlamaga nädip mümkinçilik tapyp bilerin?
“SpringBoot + Flyway” -y işe giriziň
Bahar aýakgaby näme
Näme işe başlaýarys? ... Näme we näme üçin edýändigimize düşünmek üçin “SpringBoot” -yň nämedigini çözmeli. Ilki bilen, Bahar hakda çalt (gowy, gaty çalt) gürleşeliň . Häzirki wagtda Java-da serwer programmalaryny ösdürmekde de-fakto senagat standarty. Näme standart? Muny size nädip düşündirip bilerin? Bahar, programmanyň süňküdir, soň bolsa “eti” atarys - iş logikamyz. Baharyň kömegi bilen (mundan beýläk dilleri üýtgetmek üçin wagt ýitirmezlik üçin bu yz kagyzy ulanaryn: D)) Bahar bize hemme zady edip başlaýan başlangyç berýär. Köp- Maglumat bazasy bilen işlemek isleýärsiňizmi? Gatnaşyk isleýärsiňizmi? Baglanyşyksyz bolmak isleýärsiňizmi? Ine, bahar maglumatlary bilen.
- Http haýyşlary bilen işlemek isleýärsiňizmi? Ine, bahar web (Bahar MVC).
- Objectshli zatlaryňyz üçin bir ýerde konteýner gerekmi? Ine, bahar özeni.
- Dürli rollar we buýruk zynjyry bolar ýaly bir taslamada howpsuzlyk gurmalymy? Bahar howpsuzlygy.
- Diňe şunuň ýaly zadyň bolmagy gowy bolar diýip pikir edeniňde, Baharyň eýýäm saňa zerur zady bar we çalt we aňsat birleşýär.
“SpringBoot” -y işe girizmek
Maveniň nämedigine eýýäm düşünipdik, geliň zerurlyklarymyz üçin täze taslama döredeliň. Munuň üçin diňe bu mesele üçin ýörite döredilen web sahypasyna girmeli. Bahar başlangyjy diýilýär .!["A-dan Z-a çenli Java taslamasy": SpringBoot + Flyway - 2](https://cdn.javarush.com/images/article/6c7e470c-dd6d-4f7f-ac1d-03988f1b02d6/1024.jpeg)
- Taslamany gurmak üçin gural gradle ýa-da maven. Görşüňiz ýaly, garynja indi agzalmaýar. Bu haýsy gurallaryň wagtyňyzy sarp etjekdigi barada gowy yşarat.
- Writeazyp boljak diliňiz java, kotlin, groovy. Bu ýerde hemme zat ýönekeý: hemmesi JVM ýaly we Java koduny aňsatlyk bilen işledýär. .Eri gelende aýtsak, Kotline seretmeli. Groowy aç-açan gyzyklanma döretdi (bir wagtlar truba geçdiler, ýöne çalt geçdi).
- Bahar wersiýasy ... Bu ýerde Baharyň esasy böleginiň we modullarynyň wersiýalarynyň yzygiderlidigine düşünmeli.
- Taslama maglumatlary. Men bu zatlary eýýäm beýan etdim.
- Haýsy arhiwiň ýygnaljakdygyny - Jar ýa-da Uruş saýlaýarys.
- Garaz, halaýanlarymyzyň Java wersiýasy. Recentlyaňy-ýakynda bu wersiýalar köp boldy ... Birnäçe ýyllap garaşdylar, indi bolsa ýylda iki.
- Maven - bu hakda öň gürleşenimiz hiç zat däl.
- Java biziň söýgülimiz: D.
- 2.2.11 wersiýasyny alalyň. Näme üçin iň täze däl? Näçe täze bolsa, şol ýerde käbir kemçilikleriň bolmagy mümkin. Biziň üçin haýsy wersiýanyň ähmiýeti ýok, ýöne köne görnüşi has ygtybarly bolar. Şonuň üçin 2.2.11 saýlaýarys.
- Topar: com.github.javarushcommunity
- Artifact: pru springina-uçuş-demo
- Ady: SpringBoot + Flyway Demo
- Düşündiriş: Taslama “SpringBoot” bilen “Flyway” -yň arasyndaky integrasiýany görkezýär . (Hawa, resminamalary ýazmak ukyby ösüşiň möhüm bölegi :))
- Bukjanyň ady: com.github.javarushcommunity.springbootflywaydemo . Bu ýerde derrew programmamyzy açjak synp bilen biziň üçin esasy bukjany dörederler.
- Gaplamak: banka
- Java: 8. Geliň, lokomotiwden öňe geçeliň we gowy köne sekizini alalyň. Näme üçin 11 däl? Näme üçin? Mysal üçin, men muny göremok.
!["A-dan Z-a çenli Java taslamasy": SpringBoot + Flyway - 3](https://cdn.javarush.com/images/article/5246a501-4cd3-4676-b7c1-daa40095db02/800.jpeg)
!["A-dan Z-a çenli Java taslamasy": SpringBoot + Flyway - 4](https://cdn.javarush.com/images/article/698cd505-dfd6-4f98-82a4-91b30a594ded/1080.jpeg)
!["A-dan Z-a çenli Java taslamasy": SpringBoot + Flyway - 5](https://cdn.javarush.com/images/article/750b5a4d-6ffd-4884-bc93-f5bb7beaed38/1080.jpeg)
!["A-dan Z-a çenli Java taslamasy": SpringBoot + Flyway - 6](https://cdn.javarush.com/images/article/c607ca61-d95c-4eb4-9cd7-e60c3419e889/800.jpeg)
!["A-dan Z-a çenli Java taslamasy": SpringBoot + Flyway - 7](https://cdn.javarush.com/images/article/4d8f6a79-a80e-4511-afb9-a03b4fa6e665/1024.jpeg)
!["A-dan Z-a çenli Java taslamasy": SpringBoot + Flyway - 8](https://cdn.javarush.com/images/article/ba6a8d83-6598-4351-a088-afd454e11516/800.jpeg)
!["A-dan Z-a çenli Java taslamasy": SpringBoot + Flyway - 9](https://cdn.javarush.com/images/article/0042e996-a164-4d0c-b5f4-1a7f9d5f0913/512.jpeg)
!["A-dan Z-a çenli Java taslamasy": SpringBoot + Flyway - 10](https://cdn.javarush.com/images/article/41d9959c-cf9a-4822-89da-f73bc6d8363d/512.jpeg)
!["A-dan Z-a çenli Java taslamasy": SpringBoot + Flyway - 11](https://cdn.javarush.com/images/article/ae997f33-00de-4c77-92ad-38ce59acc96b/512.jpeg)
!["A-dan Z-a çenli Java taslamasy": SpringBoot + Flyway - 12](https://cdn.javarush.com/images/article/489e0f24-a8f5-4273-968f-bc50c4030830/1080.jpeg)
!["Java-dan A-dan Z" taslamasy: SpringBoot + Flyway - 13](https://cdn.javarush.com/images/article/02a2408a-4eb2-4c2c-8646-d2eb4c18e75c/800.jpeg)
!["A-dan Z-a çenli Java taslamasy": SpringBoot + Flyway - 14](https://cdn.javarush.com/images/article/39a661fd-61ab-4125-a8b3-67c2b6253ea4/1080.jpeg)
spring.datasource.url=jdbc:mysql://localhost:3306/flyway_demo_db
spring.datasource.username=root
spring.datasource.password=root
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
Esasy usuly täzeden işledýäris we alýarys: !["Java-dan A-dan Z" taslamasy: SpringBoot + Flyway - 15](https://cdn.javarush.com/images/article/aaaa0ee4-7790-4c60-892c-2d94577adad2/1080.jpeg)
!["A-dan Z-a çenli Java taslamasy": SpringBoot + Flyway - 16](https://cdn.javarush.com/images/article/800b2f5e-f7dd-49ab-9992-a77d437e3cce/1080.jpeg)
!["A-dan Z-a çenli Java taslamasy": SpringBoot + Flyway - 17](https://cdn.javarush.com/images/article/035bd6fb-4e11-4cee-9238-0b28da78ebfd/1080.jpeg)
!["A-dan Z-a çenli Java taslamasy": SpringBoot + Flyway - 18](https://cdn.javarush.com/images/article/0c3f684e-2710-472a-bc02-2ada5b58e7e9/1080.jpeg)
- Maglumat bazasyna üstünlikli birikdirildi.
- Migrasiýa tassyklandy we hemme zat gowy.
- “Flyway” göçleri dolandyrmak üçin tablisa döretdi.
- 00001 haýsy migrasiýa başlandy - ýurdy döretmek üstünlikli boldy.
!["A-dan Z-a çenli Java taslamasy": SpringBoot + Flyway - 19](https://cdn.javarush.com/images/article/9e9c928a-fddd-4d7d-b6d2-aca9ee36b2d1/1024.jpeg)
!["Java-dan A-dan Z" taslamasy: SpringBoot + Flyway - 20](https://cdn.javarush.com/images/article/f2602d4b-22d4-429b-96e3-43f0de11e710/1024.jpeg)
!["A-dan Z-a çenli Java taslamasy": SpringBoot + Flyway - 21](https://cdn.javarush.com/images/article/89f91cfe-3c9c-4715-8446-3289acb2a0a8/1080.jpeg)
!["Java-dan A-dan Z" taslamasy: SpringBoot + Flyway - 22](https://cdn.javarush.com/images/article/564653d5-9145-4d3b-a12c-dca0b6b3e443/1080.jpeg)
!["A-dan Z-a çenli Java taslamasy": SpringBoot + Flyway - 23](https://cdn.javarush.com/images/article/86cd9ab4-4c11-4bb5-a113-51db21e678a9/1080.jpeg)
!["A-dan Z-a çenli Java taslamasy": SpringBoot + Flyway - 24](https://cdn.javarush.com/images/article/7f8d8fa6-fd73-4004-b2d7-160d5e7de3dc/1080.jpeg)
!["A-dan Z-a çenli Java taslamasy": SpringBoot + Flyway - 25](https://cdn.javarush.com/images/article/6806330f-aa25-46b8-a184-dfed4a7c59eb/256.jpeg)
Netije
Bu gezek “SpringBoot” bilen bilelikde maglumat bazasynyň göçüriş guralyna nädip düşünmelidigini we ulanylmagyny öwrendik. Bu maglumatlar, “Flyway” -y mysal hökmünde ulanyp, maglumat bazasynyň wersiýasyna gözegçilik guralynyň nämedigine düşünmek üçin zerurdyr. Dostlar, görkezen taslamamyň deslapky kody Github-da guramamyzda çap edildi . Mysal halasaňyz, oňa ýyldyz beriň , men işimiň peýdalydygyna we hakykatdanam dowam etmelidigine düşünerin. Däp bolşy ýaly, Github hasabyma ýazylmagy maslahat berýärin . Onuň üsti bilen ähli işlerimi açyk çeşmede we makalalarymyza hemişe goşulýan şol demo taslamalarynda alyp barýaryn. Hemmäňize okanyňyz üçin sag boluň. Indiki gezek anketamyzy ýazarys. Geljekde Docker hakda käbir zerur teoriýa bolar, ýöne ony tejribe bilen agyrlaşdyrarys.peýdaly baglanyşyklar
Häzirki wagtda peýdaly baglanyşyklar kän däl. Ewgeniniň wideosyna üns beriň, hakykatdanam oňa mynasyp!- Baharda taslamalary döretmek üçin web sahypasy
- Ewgeniý Borisow - Bahar gurluşykçysy
- Uçuş üçin bahar paslynda resminamalar
GO TO FULL VERSION