Мақола аз як силсила дар бораи эҷоди лоиҳаи Java (пайвандҳо ба дигар маводҳо дар охир мебошанд). Ҳадафи он таҳлor технологияҳои калидӣ мебошад, ки натиҷааш навиштани боти телеграмма мебошад. Дар ин қисм мо кӯшиш мекунем, ки SpringBoot ва Flyway-ро оғоз кунем. Ҳадди ақали назария, тавре ки шумо мехоҳед))) Мо муқоисаи ниҳоии Flyway/Liquibase-ро барои муддати номуайян сарфи назар мекунем ва ба нукта мерасем. Ва ҳатто ин аллакай кашола карда шудааст. Барои он ки Flywayро ду маротиба тавсиф накунам, ман тасмим гирифтам, ки онро фавран ба лоиҳаи ояндаи JRTB илова кунам.
бисёрҷанба, бисёр модулӣ аст:
Мо бояд ҳамчун як қисми ин чӣ кор кунем?
- Замимаи SpringBoot-ро дар асоси Maven оғоз кунед.
- Он ҷо Flyway илова кунед: хушбахтона, онҳо ба осонӣ муттаҳид карда мешаванд.
- Барои ҷадвалҳое, ки мо дар базаи мисол дорем, схемаро илова кунед.
Роҳи парвоз чист
Барои истифодаи чизе, шумо аввал бояд фаҳмед, ки он чист ва чаро. Flyway воситаи идоракунии versionи пойгоҳи додаҳо мебошад. Суханҳо маълуманд, аммо гӯё фаҳмиш илова нашудааст, дуруст? Биёед кӯшиш кунем, ки мушкилотеро, ки парвози ҳавопаймо ҳал мекунад, тасвир кунем. Фарз мекунем, ки мо лоиҳа дорем. Мисли ҳама чиз дар ҷаҳони мо, он комил нест, бинобар ин нақша кардан ва тартиб додани варианти ниҳоии лоиҳа имкон надошт. Хар дафъае, ки нозукихои муайяни ба хисоб гирифтанашуда пайдо мешаванд. Лоиҳа дар кори худ базаи маълумотро истифода мебарад. Албатта, агар лоиҳа тағир ёбад, сохтори пойгоҳи додаҳо низ метавонад тағир ёбад. Фарз мекунем, ки мо барои яке аз субъектҳои лоиҳаи худ майдони нав илова мекунем. Чӣ тавр бояд кард?- Ин майдонро ба an objectи мо илова кунед, ҳама чизро навсозӣ кунед, то мантиқи тиҷорат кор кунад.
- Навсозии базаи маълумот. Ягона роҳи имконпазир ин аст, ки онро дастӣ иҷро кунед. Барои ин, шумо бояд ворид шавед ва скрипти зарурии sql-ро сабт кунед.
- Аммо агар мо зиёда аз як ҷой дошта бошем, ки лоиҳаи худро ҷойгир кунем, пас оё ин бояд дар ҳар яки онҳо анҷом дода шавад?
- ва агар мо хоҳем, ки баргардем, мо аниқ медонем, ки сохтори пойгоҳи додаҳо ҳоло дар кадом ҳолат аст?
- Чӣ тавр мо боварӣ ҳосил карда метавонем, ки тағир додани пойгоҳи додаҳо муваффақ аст?
- Чӣ тавр ман метавонам имкони пайгирӣ кардани ҳама тағиротҳои пойгоҳи додаҳоро, ки дар лоиҳа ба амал омадаанд, пайдо кунам?
SpringBoot + Flyway -ро оғоз кунед
Boot Spring чист
Мо чӣ кор карда истодаем?... Барои фаҳмидани он ки мо чӣ кор карда истодаем, шумо бояд муайян кунед, ки SpringBoot чист. Аввалан, биёед зуд (хуб, хеле зуд) дар бораи Баҳор сӯҳбат кунем . Дар айни замон, ин стандарти саноатӣ дар таҳияи барномаҳои serverӣ дар Java мебошад. Стандарт аз чӣ? Чӣ тавр ман инро ба шумо фаҳмонам? Баҳор скелети барнома аст, ки мо ба он "гӯшт" - мантиқи тиҷоратии худро мепартоем. Бо кӯмаки Баҳор (минбаъд ман ин коғази пайгирӣро истифода хоҳам кард, то вақти иваз кардани забонҳоро беҳуда сарф накунам: D)) Баҳор ба мо оғоз мекунад, ки мо ҳама корро оғоз мекунем. Он- Оё шумо мехоҳед бо пойгоҳи додаҳо кор кунед? Оё шумо муносибатро мехоҳед? Оё шумо мехоҳед, ки муносибати ғайрирасмӣ дошта бошед? Дар ин ҷо мо бо маълумоти баҳорем.
- Оё шумо мехоҳед бо дархостҳои http кор кунед? Инак, шумо меравед, веби баҳорӣ (MVC Spring).
- Оё ба шумо барои ҳама ашёи худ дар як ҷо контейнер лозим аст? Дар ин ҷо Баҳор Core аст.
- Оё ба шумо лозим аст, ки амниятро дар лоиҳа насб кунед, то нақшҳо ва силсилаи фармонҳо гуногун бошанд? Амнияти баҳорӣ.
- Ҳангоме ки шумо фикр мекардед, ки доштани чунин чизе хуб аст, маълум мешавад, ки Баҳор аллакай он чизеро, ки ба шумо лозим аст, дорад ва зуд ва ба осонӣ муттаҳид мешавад.
Оғози SpringBoot
Азбаски мо аллакай фаҳмидем, ки Maven чист, биёед барои эҳтиёҷоти худ як лоиҳаи нав эҷод кунем. Барои ин ба шумо лозим аст, ки ба вебсайте равед, ки махсус барои ин масъала сохта шудааст. Он Spring Initializr номида мешавад . Дар ин ҷо шумо бояд чизеро, ки ба шумо лозим аст, пур кунед ва интихоб кунед:- Воситаи сохтани лоиҳа gradle ё maven аст. Тавре ки шумо мебинед, Мӯрча дигар ҳатто зикр нашудааст. Ин як маслиҳати хуб дар бораи он аст, ки кадом асбобҳои сохтмонӣ вақти шумо арзиш доранд.
- Забоне, ки шумо метавонед бо он нависед, java, kotlin, groovy мебошад. Дар ин ҷо ҳама чиз оддӣ аст: ҳамаи онҳо ба JVM монанданд ва рамзи Java-ро ба осонӣ иҷро мекунанд. Ба ҳар ҳол, ба Котлин нигоҳ кардан лозим аст. Groovy ошкоро ҷолиб шуд (вақте буд, ки онҳо ба grooves гузаштанд, аммо он зуд гузашт).
- Версияи баҳорӣ... Дар ин ҷо шумо бояд фаҳмед, ки versionҳои қисми асосии Spring ва модулҳои он мувофиқанд.
- Маълумоти лоиҳа. Ман ин чизҳоро аллакай тавсиф кардаам.
- Мо интихоб мекунем, ки кадом архив ҷамъ карда мешавад - Љар ё Ҷанг.
- Хуб, versionи Java аз дӯстдоштаи мо. Ва вактхои охир ин versionхо зиёд шуданд... Солхо интизор шуданд, акнун дар як сол ду.
- Мавен - Беҳуда нест, ки мо дар ин бора қаблан бо шумо сӯҳбат кардем.
- Java азизи мост: D
- Биёед versionи 2.2.11-ро гирем. Чаро навтарин нест? Азбаски он навтар бошад, ҳамон қадар эҳтимолияти пайдо шудани хатогиҳо дар он ҷо зиёдтар аст. Барои мо, муҳим нест, ки кадом version, аммо кӯҳнааш боэътимодтар хоҳад буд. Аз ин рӯ, мо 2.2.11-ро интихоб мекунем.
- Гурӯҳ: com.github.javarushcommunity
- Артефакт: springboot-flyway-demo
- Ном: SpringBoot + Flyway Demo
- Тавсифи: Лоиҳа ҳамгироиро байни SpringBoot ва Flyway нишон медиҳад . (Бале, қобorяти навиштани ҳуҷҷатҳо қисми муҳими рушд аст :))
- Номи баста: com.github.javarushcommunity.springbootflywaydemo . Дар ин ҷо онҳо фавран барои мо бастаи асосиро бо синфе эҷод мекунанд, ки замимаи моро оғоз мекунад.
- Бастабандӣ: кӯза
- Ёва: 8. Биёед, пеш аз тепловоз наравем ва ҳаштсолаи кӯҳнаро гирем. Чаро 11 не? Барои чӣ? Барои мисоли мо, ман нуктаро намебинам.
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
Мо боз усули асосиро иҷро мекунем ва мегирем: Ҳоло мо бояд ҳадди аққал як муҳоҷиратро илова кунем. Барои дуруст сохтани муҳоҷират, шумо бояд қолаби зеринро гиред: V<VERSION>__<NAME>.sql Бо истифода аз ин қолаб, мо файли муҳоҷиратро бо номи V00001__Create_country_table.sql дар ҷузвдони мувофиқ эҷод мекунем: /src/main/resources/ db.migration/ . Биёед дар он ҷадвали кишвар эҷод кунем. Биёед скриптро аз мақолаи дуюм дар бораи базаи маълумот гирем . Пеш аз оғоз, биёед ворид шавем ва барои кор пойгоҳи додаҳо эҷод кунем: flyway_demo_db. Биёед инро тавассути MysqlWorkbench иҷро кунем: Акнун мо метавонем усули асосиро дубора иҷро кунем: Ҳама чиз кор кард, аммо азбаски мо то ҳол дар лоиҳа чизе надорем, он кор кард. Бо вуҷуди ин, аз гузоришҳо маълум аст ( хонед, ки гузоришҳо чистанд ), ки:
- Бомуваффақият ба базаи маълумот пайваст шуд.
- Муҳоҷират тасдиқ карда шуд ва ҳама чиз хуб аст.
- Flyway ҷадвалеро барои идоракунии муҳоҷират эҷод кардааст.
- Ва чӣ муҳоҷирати 00001 оғоз ёфт - бунёди кишвар муваффақ буд.
Хулоса
Ин дафъа мо фаҳмидем, ки чӣ гуна абзори муҳоҷирати пойгоҳи додаҳоро дар якҷоягӣ бо SpringBoot фаҳмем ва истифода барем. Ин маълумот барои фаҳмидани он, ки воситаи идоракунии versionи пойгоҳи додаҳо бо истифода аз Flyway ҳамчун намуна зарур аст. Дӯстон, рамзи сарчашмаи лоиҳае, ки ман нишон додам, дар ташкилоти мо дар Github нашр шудааст . Агар ба шумо мисол маъқул бошад, ба он ситора диҳед , ва ман мефаҳмам, ки кори ман муфид аст ва воқеан арзандаи идома додан аст. Одатан, ман пешниҳод мекунам, ки ба ҳисоби Github-и худ обуна шавам . Тавассути ӯ ман тамоми кори худро дар манбаи кушода ва ҳамаи он лоиҳаҳои намоишӣ, ки ҳамеша мақолаҳои маро ҳамроҳӣ мекунанд, иҷро мекунам. Ташаккур ба ҳама барои хондан. Дафъаи дигар мо аризаи худро менависем. Дар оянда дар Docker як назарияи зарурӣ вуҷуд хоҳад дошт, аммо мо онро бо амалия ба таври ҷиддӣ ҳал мекунем.истинодҳои муфид
Имрӯз истинодҳои муфид чандон зиёд нестанд. Ба видеои Евгений диққат диҳед, ин воқеан арзанда аст!- Вебсайт барои эҷоди лоиҳаҳо дар фасли баҳор
- Евгений Борисов — бинокори бахор
- Ҳуҷҷатҳо дар фасли баҳор барои Flyway
GO TO FULL VERSION