Artykuł z serii o tworzeniu projektu w Javie (linki do innych materiałów znajdują się na końcu). Jego celem jest analiza kluczowych technologii, efektem jest napisanie bota telegramowego. W tej części staramy się uruchomić SpringBoot i Flyway. Minimalna ilość teorii, jak kto lubi))) Pomijamy ostateczne porównanie Flyway/Liquibase na czas nieokreślony i przechodzimy do sedna. A mimo to to już się przeciągnęło. Aby nie opisywać Flywaya dwa razy, postanowiłem od razu dodać go do naszego przyszłego projektu JRTB.
wieloaspektowy, wielomodułowy:
Co musimy zrobić w ramach tego?
- Uruchom aplikację SpringBoot opartą na Maven.
- Dodaj tam Flyway: na szczęście można je łatwo zintegrować.
- Dodaj schemat dla tabel, które mamy w przykładowej bazie danych.
Co to jest przelot
Aby czegoś użyć, musisz najpierw dowiedzieć się, co to jest i dlaczego. Flyway to narzędzie do kontroli wersji bazy danych. Słowa są dobrze znane, ale jakoś nie dodano ich zrozumienia, prawda? Spróbujmy opisać problem, który rozwiązuje flyway. Powiedzmy, że mamy projekt. Jak wszystko w naszym świecie, nie jest on idealny, dlatego nie było możliwości zaplanowania i sporządzenia ostatecznej wersji projektu. Za każdym razem pojawiają się pewne niezliczone niuanse. Projekt wykorzystuje w swojej pracy bazę danych. Oczywiście w przypadku zmiany projektu może zmienić się również struktura bazy danych. Załóżmy, że dodajemy nowe pole dla jednego z encji w naszym projekcie. Jak to zrobić?- Dodaj to pole do naszej encji, zaktualizuj wszystko tak, aby logika biznesowa działała.
- Zaktualizuj bazę danych. Jedynym możliwym sposobem jest zrobienie tego ręcznie. Aby to zrobić, musisz wejść i zarejestrować niezbędny skrypt sql.
- Jeśli jednak mamy więcej niż jedno miejsce, w którym realizujemy nasz projekt, to czy trzeba to robić w każdym z nich?
- a jeśli chcemy wrócić, skąd mamy dokładnie wiedzieć, w jakim stanie jest teraz struktura bazy danych?
- Skąd będziemy mieć pewność, że zmiana bazy danych przebiegła pomyślnie?
- Jak uzyskać możliwość śledzenia wszystkich zmian w bazie danych, które miały miejsce w projekcie?
Uruchom SpringBoot + Flyway
Co to jest Spring Boot
Co uruchamiamy?... Aby zrozumieć, co i dlaczego robimy, musisz zdecydować, czym jest SpringBoot. Najpierw porozmawiajmy szybko (no cóż, bardzo szybko) o wiośnie . W tej chwili jest to de facto standard branżowy w tworzeniu aplikacji serwerowych w Javie. Standard czego? Jak mogę ci to wyjaśnić? Spring to szkielet aplikacji, na który następnie wrzucamy „mięso” – naszą logikę biznesową. Z pomocą Springa (dalej będę korzystał z tej kalki, żeby nie tracić czasu na przełączanie języków :D)) Wiosna daje nam początek, od którego zaczynamy wszystko. Jest- Chcesz pracować z bazą danych? Czy chcesz relacji? Czy chcesz być nierelacyjny? Oto jesteśmy z Spring Data.
- Czy chcesz pracować z żądaniami http? Proszę bardzo, Spring Web (Spring MVC).
- Potrzebujesz kontenera na wszystkie swoje przedmioty w jednym miejscu? Oto wiosenny rdzeń.
- Czy musisz skonfigurować zabezpieczenia projektu, aby istniały różne role i łańcuch dowodzenia? Wiosenne bezpieczeństwo.
- Kiedy już pomyślałeś, że fajnie byłoby mieć coś takiego, okazuje się, że Spring ma już to, czego potrzebujesz i integruje się szybko i łatwo.
Uruchamianie SpringBoota
Skoro już zrozumieliśmy czym jest Maven, stwórzmy nowy projekt na nasze potrzeby. Aby to zrobić, wystarczy udać się na specjalnie stworzoną w tym celu stronę internetową. Nazywa się Spring Inicjalizator . Tutaj musisz wypełnić i wybrać to, czego potrzebujesz:- Narzędziem do tworzenia projektu jest gradle lub maven. Jak widać, o Ancie już nawet nie ma mowy. To dobra wskazówka, które narzędzia do budowania są warte Twojego czasu.
- Język, w którym możesz pisać, to Java, Kotlin, Groovy. Tutaj wszystko jest proste: wszystkie są podobne do JVM i łatwo uruchamiają kod Java. Swoją drogą warto zajrzeć do Kotlina. Groovy szczerze mówiąc przestało być interesujące (był czas, kiedy przeszli na rytmy, ale szybko to minęło).
- Wersja wiosenna... Tutaj musisz zrozumieć, że wersje głównej części Springa i jego modułów są spójne.
- Dane projektu. Opisałem już te rzeczy.
- Wybieramy, które archiwum będzie gromadzone - Jar czy Wojna.
- Cóż, wersja Java naszej ulubionej. A ostatnio tych wersji było mnóstwo... Czekały lata, a teraz są dwie rocznie.
- Maven – nie bez powodu rozmawialiśmy z Tobą o tym wcześniej.
- Java to nasza ukochana :D
- Weźmy wersję 2.2.11. Dlaczego nie najnowszy? Bo im jest nowszy, tym większa szansa, że mogą znaleźć się tam jakieś błędy. Dla nas nie ma znaczenia, która wersja, ale ta starsza będzie bardziej niezawodna. Dlatego wybieramy 2.2.11.
- Grupa: com.github.javarushcommunity
- Artefakt: wersja demo springboot-flyway
- Nazwa: SpringBoot + wersja demonstracyjna Flyway
- Opis: Projekt demonstruje integrację SpringBoot i Flyway . (Tak, umiejętność pisania dokumentacji jest ważną częścią rozwoju :))
- Nazwa pakietu: com.github.javarushcommunity.springbootflywaydemo . Tutaj od razu stworzą dla nas podstawowy pakiet z klasą, która uruchomi naszą aplikację.
- Opakowanie: Słoik
- Java: 8. Nie wyprzedzajmy lokomotywy i bierzmy starą, dobrą ósemkę. Dlaczego nie 11? Po co? W naszym przykładzie nie widzę sensu.
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
Uruchamiamy ponownie główną metodę i otrzymujemy: Teraz musimy dodać przynajmniej jedną migrację. Aby poprawnie skomponować migrację należy pobrać następujący szablon: V<VERSION>__<NAZWA>.sql Korzystając z tego szablonu utworzymy plik migracji o nazwie V00001__Create_country_table.sql w odpowiednim folderze: /src/main/resources/ db.migracja/ . Stwórzmy w nim tabelę krajów. Weźmy skrypt z drugiego artykułu o bazie danych . Zanim zaczniemy, wejdźmy i utwórzmy bazę danych do pracy: flyway_demo_db. Zróbmy to za pomocą MysqlWorkbench: Teraz możemy ponownie uruchomić główną metodę: Wszystko się udało, ale ponieważ nie mamy jeszcze niczego w projekcie, zakończyło się to. Jednak z logów jasno wynika ( czytaj jakie to logi ) że:
- Pomyślnie połączono z bazą danych.
- Migracja została sprawdzona i wszystko jest w porządku.
- Flyway stworzył tabelę do zarządzania migracjami.
- I od czego zaczęła się migracja 00001 - utworzenie kraju przebiegło pomyślnie.
Wniosek
Tym razem nauczyliśmy się rozumieć i używać narzędzia do migracji baz danych w połączeniu ze SpringBoot. Informacje te są niezbędne, aby zrozumieć, czym jest narzędzie kontroli wersji bazy danych, na przykładzie Flyway. Przyjaciele, kod źródłowy projektu, który pokazałem, został opublikowany w naszej organizacji na Githubie . Jeśli podoba Ci się przykład, daj mu gwiazdkę , a zrozumiem, że moja praca jest przydatna i naprawdę warta kontynuacji. Tradycyjnie proponuję subskrybować moje konto Github . Za jego pośrednictwem prowadzę całą moją pracę nad oprogramowaniem open source i wszystkimi projektami demonstracyjnymi, które niezmiennie towarzyszą moim artykułom. Dziękuję wszystkim za przeczytanie. Następnym razem napiszemy naszą aplikację. W przyszłości będzie pewna niezbędna teoria na temat Dockera, ale mocno ją osłabimy praktyką.Przydatne linki
Dziś nie ma zbyt wielu przydatnych linków. Zwróćcie uwagę na film Evgeniy'a, naprawdę warto!- Strona do tworzenia projektów na Springu
- Evgeniy Borisov — budowniczy wiosny
- Dokumentacja na wiosnę dla Flyway
GO TO FULL VERSION