Isang artikulo mula sa isang serye tungkol sa paglikha ng isang proyekto ng Java (nasa dulo ang mga link sa iba pang mga materyales). Ang layunin nito ay pag-aralan ang mga pangunahing teknolohiya, ang resulta ay pagsulat ng isang telegram bot. Sa bahaging ito, sinusubukan naming ilunsad ang SpringBoot at Flyway. Ang pinakamababang halaga ng teorya, ayon sa gusto mo))) Inalis namin ang panghuling paghahambing ng Flyway/Liquibase para sa isang hindi tiyak na yugto ng panahon at makarating sa punto. At kahit na ganoon ay nakaladkad na ito. Upang hindi ilarawan nang dalawang beses ang Flyway, nagpasya akong idagdag ito kaagad sa aming hinaharap na proyekto ng JRTB.
multi-faceted, multi-modular:
Ano ang kailangan nating gawin bilang bahagi nito?
- Ilunsad ang isang SpringBoot application batay sa Maven.
- Magdagdag ng Flyway doon: sa kabutihang palad, madali silang isinama.
- Magdagdag ng schema para sa mga talahanayan na mayroon kami sa halimbawang database.
Ano ang flyway
Upang gumamit ng isang bagay, kailangan mo munang malaman kung ano ito at bakit. Ang Flyway ay isang tool sa pagkontrol ng bersyon ng database. Kilalang-kilala ang mga salita, ngunit kahit papaano ay hindi nadagdagan ang pang-unawa, di ba? Subukan nating ilarawan ang problemang nalulutas ng flyway. Sabihin na nating may project tayo. Tulad ng lahat ng bagay sa ating mundo, hindi ito perpekto, kaya hindi posible na magplano at gumuhit ng panghuling bersyon ng proyekto. Sa bawat oras na lumilitaw ang ilang hindi natukoy na mga nuances. Gumagamit ang proyekto ng isang database sa gawain nito. Siyempre, kung ang proyekto ay nagbabago, ang istraktura ng database ay maaari ring magbago. Sabihin nating nagdagdag kami ng bagong field para sa isa sa mga entity sa aming proyekto. Paano ito gagawin?- Idagdag ang field na ito sa aming entity, i-update ang lahat para gumana ang logic ng negosyo.
- I-update ang database. Ang tanging posibleng paraan ay gawin ito nang manu-mano. Upang gawin ito, kailangan mong pumasok at irehistro ang kinakailangang sql script.
- Ngunit kung mayroon tayong higit sa isang lugar kung saan tayo nagde-deploy ng ating proyekto, kailangan ba itong gawin sa bawat isa sa kanila?
- at kung gusto nating bumalik, paano natin malalaman kung ano mismo ang estado ng istraktura ng database ngayon?
- Paano tayo makatitiyak na matagumpay ang pagbabago ng database?
- Paano ako makakakuha ng pagkakataon na subaybayan ang lahat ng mga pagbabago sa database na naganap sa proyekto?
Ilunsad ang SpringBoot + Flyway
Ano ang Spring Boot
Ano ang ilulunsad namin?... Upang maunawaan kung ano at bakit namin ginagawa, kailangan mong magpasya kung ano ang SpringBoot. Una, mabilis (mabuti, napakabilis) pag-usapan natin ang Spring . Sa ngayon, ito ang de facto na pamantayan ng industriya sa pagbuo ng mga application ng server sa Java. Pamantayan ng ano? Paano ko ito ipapaliwanag sa iyo? Ang tagsibol ay ang balangkas ng aplikasyon, kung saan itatapon namin ang "karne" - ang lohika ng aming negosyo. Sa tulong ng Spring (simula dito ay gagamitin ko itong tracing paper upang hindi mag-aksaya ng oras sa pagpapalit ng mga wika :D)) Binibigyan tayo ng Spring ng simula kung saan sinimulan nating gawin ang lahat. Ito ay- Gusto mo bang magtrabaho sa isang database? Gusto mo ba ng relational? Gusto mo ba ng non-relational? Narito kami sa Spring Data.
- Gusto mo bang magtrabaho sa mga kahilingan sa http? Eto na, Spring web (Spring MVC).
- Kailangan mo ba ng isang lalagyan para sa lahat ng iyong mga bagay sa isang lugar? Narito ang Spring Core.
- Kailangan mo bang mag-set up ng seguridad sa isang proyekto upang magkaroon ng iba't ibang tungkulin at chain of command? Seguridad sa tagsibol.
- Sa sandaling naisip mo na magiging maganda ang magkaroon ng ganoong bagay, lumalabas na mayroon na ang Spring ng kailangan mo, at mabilis at madali itong nagsasama.
Inilunsad ang SpringBoot
Dahil naintindihan na natin kung ano ang Maven, gumawa tayo ng bagong proyekto para sa ating mga pangangailangan. Upang gawin ito, kailangan mo lamang pumunta sa isang website na espesyal na nilikha para sa bagay na ito. Ito ay tinatawag na Spring Initializr . Dito kailangan mong punan at piliin kung ano ang kailangan mo:- Ang tool sa pagbuo ng proyekto ay gradle o maven. Tulad ng makikita mo, hindi na binanggit ang Ant. Ito ay isang magandang pahiwatig tungkol sa kung aling mga tool sa pagbuo ang sulit sa iyong oras.
- Ang wikang maaari mong isulat ay java, kotlin, groovy. Ang lahat ay simple dito: lahat sila ay katulad ng JVM at madaling magpatakbo ng Java code. Sa pamamagitan ng paraan, ito ay nagkakahalaga ng pagtingin sa Kotlin. Ang Groovy ay tahasang naging hindi kawili-wili (may oras na lumipat sila sa mga grooves, ngunit mabilis itong lumipas).
- Bersyon ng tagsibol... Dito kailangan mong maunawaan na ang mga bersyon ng pangunahing bahagi ng Spring at ang mga module nito ay pare-pareho.
- Data ng proyekto. Inilarawan ko na ang mga bagay na ito.
- Pinipili namin kung aling archive ang kokolektahin - Jar o Digmaan.
- Well, ang bersyon ng Java ng aming paborito. At kamakailan lamang ay nagkaroon ng maraming mga bersyon na ito... Naghintay sila ng maraming taon, at ngayon ay mayroon nang dalawa sa isang taon.
- Maven - hindi para sa wala ang pag-uusap namin sa iyo tungkol dito kanina.
- Si Java ang ating sinta :D
- Kunin natin ang bersyon 2.2.11. Bakit hindi ang pinakabago? Dahil mas bago ito, mas malaki ang posibilidad na may ilang mga bug doon. Para sa amin, hindi mahalaga kung aling bersyon, ngunit ang mas matanda ay magiging mas maaasahan. Samakatuwid, pipiliin namin ang 2.2.11.
- Pangkat: com.github.javarushcommunity
- Artifact: springboot-flyway-demo
- Pangalan: SpringBoot + Flyway Demo
- Paglalarawan: Ipinapakita ng proyekto ang pagsasama sa pagitan ng SpringBoot at Flyway . (Oo, ang kakayahang magsulat ng dokumentasyon ay isang mahalagang bahagi ng pag-unlad :))
- Pangalan ng package: com.github.javarushcommunity.springbootflywaydemo . Dito ay agad silang gagawa ng isang pangunahing pakete para sa amin na may isang klase na maglulunsad ng aming aplikasyon.
- Packaging: Jar
- Java: 8. Huwag nating unahan ang lokomotibo at kunin ang magandang lumang walo. Bakit hindi 11? Para saan? Para sa aming halimbawa, hindi ko nakikita ang punto.
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
Pinapatakbo namin muli ang pangunahing paraan at makuha ang: Ngayon kailangan naming magdagdag ng kahit isang paglipat. Upang gumawa ng migration nang tama, kailangan mong kunin ang sumusunod na template: V<VERSION>__<NAME>.sql Gamit ang template na ito, gagawa kami ng migration file na pinangalanang V00001__Create_country_table.sql sa naaangkop na folder: /src/main/resources/ db.migration/ . Gumawa tayo ng country table sa loob nito. Kunin natin ang script mula sa pangalawang artikulo tungkol sa database . Bago magsimula, pumasok tayo at gumawa ng database para sa trabaho: flyway_demo_db. Gawin natin ito sa pamamagitan ng MysqlWorkbench: Ngayon ay maaari nating patakbuhin muli ang pangunahing pamamaraan: Lahat ay gumana, ngunit dahil wala pa tayong anumang bagay sa proyekto, natapos na itong gumana. Gayunpaman, malinaw mula sa mga log ( basahin kung ano ang mga log ) na:
- Matagumpay na nakakonekta sa database.
- Na-validate na ang migration at okay na ang lahat.
- Gumawa ng talahanayan ang Flyway para pamahalaan ang mga paglilipat.
- At kung anong migration 00001 ang nagsimula - ang paglikha ng bansa ay matagumpay.
Konklusyon
Sa pagkakataong ito natutunan namin kung paano maunawaan at gumamit ng tool sa paglilipat ng database kasabay ng SpringBoot. Ang impormasyong ito ay kinakailangan upang maunawaan kung ano ang isang database version control tool, gamit ang Flyway bilang isang halimbawa. Mga kaibigan, ang source code ng proyektong ipinakita ko ay na-publish sa aming organisasyon sa Github . Kung gusto mo ang halimbawa, bigyan ito ng bituin , at mauunawaan ko na ang aking trabaho ay kapaki-pakinabang at talagang nagkakahalaga ng pagpapatuloy. Ayon sa kaugalian, iminumungkahi kong mag-subscribe sa aking Github account . Sa pamamagitan niya ay isinasagawa ko ang lahat ng aking trabaho sa open source at lahat ng mga proyektong demo na palaging kasama ng aking mga artikulo. Salamat sa lahat ng nagbabasa. Sa susunod na isusulat namin ang aming aplikasyon. Magkakaroon ng ilang kinakailangang teorya sa Docker sa hinaharap, ngunit lubos naming ibababa ito sa pagsasanay.kapaki-pakinabang na mga link
Ngayon ay walang maraming kapaki-pakinabang na mga link. Bigyang-pansin ang video ni Evgeniy, ito ay talagang sulit!- Website para sa paglikha ng mga proyekto sa Spring
- Evgeniy Borisov - Tagabuo ng tagsibol
- Dokumentasyon sa Spring para sa Flyway
GO TO FULL VERSION