Ein Artikel aus einer Reihe über die Erstellung eines Java-Projekts (Links zu anderen Materialien finden Sie am Ende). Sein Ziel ist es, Schlüsseltechnologien zu analysieren, das Ergebnis ist das Schreiben eines Telegram-Bots. In diesem Teil versuchen wir, SpringBoot und Flyway zu starten. Das Minimum an Theorie, wie Sie möchten))) Wir lassen den abschließenden Vergleich von Flyway/Liquibase auf unbestimmte Zeit aus und kommen zur Sache. Und trotzdem hat es sich schon hingezogen. Um Flyway nicht zweimal zu beschreiben, habe ich beschlossen, es sofort zu unserem zukünftigen JRTB-Projekt hinzuzufügen.
vielfältig, multimodular:
Was müssen wir dabei tun?
- Starten Sie eine SpringBoot-Anwendung basierend auf Maven.
- Fügen Sie dort Flyway hinzu: Glücklicherweise lassen sie sich problemlos integrieren.
- Fügen Sie ein Schema für die Tabellen hinzu, die wir in der Beispieldatenbank haben.
Was ist Flyway?
Um etwas zu verwenden, müssen Sie zunächst herausfinden, was es ist und warum. Flyway ist ein Tool zur Datenbankversionskontrolle. Die Worte sind bekannt, aber irgendwie ist das Verständnis nicht dazugekommen, oder? Versuchen wir, das Problem zu beschreiben, das Flyway löst. Nehmen wir an, wir haben ein Projekt. Wie alles in unserer Welt ist es nicht perfekt, daher war es nicht möglich, die endgültige Version des Projekts zu planen und auszuarbeiten. Jedes Mal tauchen bestimmte unerklärte Nuancen auf. Das Projekt nutzt bei seiner Arbeit eine Datenbank. Wenn sich das Projekt ändert, kann sich natürlich auch die Datenbankstruktur ändern. Nehmen wir an, wir fügen ein neues Feld für eine der Entitäten in unserem Projekt hinzu. Wie kann man das machen?- Fügen Sie dieses Feld zu unserer Entität hinzu und aktualisieren Sie alles, damit die Geschäftslogik funktioniert.
- Aktualisieren Sie die Datenbank. Die einzig mögliche Möglichkeit besteht darin, dies manuell zu tun. Dazu müssen Sie das erforderliche SQL-Skript registrieren.
- Aber wenn wir mehr als einen Ort haben, an dem wir unser Projekt einsetzen, muss dies dann an jedem Ort geschehen?
- Und wenn wir zurückgehen wollen, woher wissen wir dann genau, in welchem Zustand sich die Datenbankstruktur jetzt befindet?
- Wie können wir sicher sein, dass die Datenbankänderung erfolgreich war?
- Wie kann ich die Möglichkeit erhalten, alle Datenbankänderungen zu verfolgen, die im Projekt vorgenommen wurden?
Starten Sie SpringBoot + Flyway
Was ist Spring Boot?
Was starten wir? ... Um zu verstehen, was und warum wir tun, müssen Sie entscheiden, was SpringBoot ist. Lassen Sie uns zunächst kurz (naja, sehr schnell) über den Frühling sprechen . Derzeit ist es der De-facto-Industriestandard bei der Entwicklung von Serveranwendungen in Java. Standard von was? Wie kann ich Ihnen das erklären? Spring ist das Grundgerüst der Anwendung, auf das wir dann das „Fleisch“ werfen – unsere Geschäftslogik. Mit Hilfe von Spring (im Folgenden werde ich dieses Transparentpapier verwenden, um keine Zeit mit dem Wechseln der Sprache zu verschwenden :D)) gibt uns Spring einen Ausgangspunkt, von dem aus wir beginnen, alles zu tun. Es ist- Möchten Sie mit einer Datenbank arbeiten? Möchten Sie relational? Willst du nicht-relational? Hier sind wir bei Spring Data.
- Möchten Sie mit http-Anfragen arbeiten? Bitte schön, Spring Web (Spring MVC).
- Benötigen Sie einen Container für alle Ihre Gegenstände an einem Ort? Hier ist Spring Core.
- Müssen Sie die Sicherheit für ein Projekt so einrichten, dass es unterschiedliche Rollen und Befehlsketten gibt? Frühlingssicherheit.
- Gerade als Sie dachten, es wäre schön, so etwas zu haben, stellt sich heraus, dass Spring bereits alles hat, was Sie brauchen, und es lässt sich schnell und einfach integrieren.
SpringBoot starten
Da wir bereits verstanden haben, was Maven ist, erstellen wir ein neues Projekt für unsere Bedürfnisse. Dazu müssen Sie lediglich eine speziell dafür erstellte Website aufrufen. Es heißt Spring Initializr . Hier müssen Sie ausfüllen und auswählen, was Sie benötigen:- Das Projekterstellungstool ist Gradle oder Maven. Wie Sie sehen, wird Ant nicht einmal mehr erwähnt. Dies ist ein guter Hinweis darauf, welche Build-Tools Ihre Zeit wert sind.
- Die Sprache, in der Sie schreiben können, ist Java, Kotlin, Groovy. Hier ist alles einfach: Sie sind alle JVM-ähnlich und führen problemlos Java-Code aus. Es lohnt sich übrigens, einen Blick auf Kotlin zu werfen. Groovy ist ehrlich gesagt uninteressant geworden (es gab eine Zeit, in der man auf Grooves umgestiegen ist, aber das ist schnell vorbei).
- Frühlingsversion... Hier müssen Sie verstehen, dass die Versionen des Hauptteils von Spring und seiner Module konsistent sind.
- Projektdaten. Ich habe diese Dinge bereits beschrieben.
- Wir wählen aus, welches Archiv gesammelt werden soll – Jar oder War.
- Nun, die Java-Version unseres Favoriten. Und in letzter Zeit gibt es viele dieser Versionen ... Sie haben jahrelang gewartet, und jetzt gibt es zwei pro Jahr.
- Maven – nicht umsonst haben wir vorhin mit Ihnen darüber gesprochen.
- Java ist unser Liebling :D
- Nehmen wir Version 2.2.11. Warum nicht das Neueste? Denn je neuer es ist, desto größer ist die Wahrscheinlichkeit, dass es dort einige Fehler gibt. Für uns spielt es keine Rolle, welche Version, aber die ältere wird zuverlässiger sein. Daher wählen wir 2.2.11.
- Gruppe: com.github.javarushcommunity
- Artefakt: springboot-flyway-demo
- Name: SpringBoot + Flyway-Demo
- Beschreibung: Das Projekt demonstriert die Integration zwischen SpringBoot und Flyway . (Ja, die Fähigkeit, Dokumentationen zu schreiben, ist ein wichtiger Teil der Entwicklung :))
- Paketname: com.github.javarushcommunity.springbootflywaydemo . Hier erstellen sie für uns sofort ein Basispaket mit einer Klasse, die unsere Anwendung startet.
- Verpackung: Glas
- Java: 8. Gehen wir nicht der Lokomotive voraus und nehmen wir die gute alte Acht. Warum nicht 11? Und warum? Für unser Beispiel sehe ich keinen Sinn.
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
Wir führen die Hauptmethode erneut aus und erhalten: Jetzt müssen wir mindestens eine Migration hinzufügen. Um eine Migration korrekt zu erstellen, müssen Sie die folgende Vorlage verwenden: V<VERSION>__<NAME>.sql Mit dieser Vorlage erstellen wir eine Migrationsdatei mit dem Namen V00001__Create_country_table.sql im entsprechenden Ordner: /src/main/resources/ db.migration/ . Lassen Sie uns darin eine Ländertabelle erstellen. Nehmen wir das Skript aus dem zweiten Artikel über die Datenbank . Bevor wir beginnen, erstellen wir zunächst eine Datenbank für die Arbeit: flyway_demo_db. Machen wir das über MysqlWorkbench: Jetzt können wir die Hauptmethode erneut ausführen: Alles hat geklappt, aber da wir noch nichts im Projekt haben, funktioniert es nicht mehr. Aus den Protokollen ( lesen Sie , was Protokolle sind ) geht jedoch klar hervor, dass:
- Erfolgreich mit der Datenbank verbunden.
- Die Migration wurde validiert und alles ist in Ordnung.
- Flyway hat eine Tabelle zur Verwaltung von Migrationen erstellt.
- Und was Migration 00001 begann – die Gründung des Landes war erfolgreich.
Abschluss
Dieses Mal haben wir gelernt, wie man ein Datenbankmigrationstool in Verbindung mit SpringBoot versteht und verwendet. Diese Informationen sind erforderlich, um zu verstehen, was ein Datenbank-Versionskontrolltool ist, am Beispiel von Flyway. Freunde, der Quellcode des Projekts, den ich gezeigt habe, ist in unserer Organisation auf Github veröffentlicht . Wenn Ihnen das Beispiel gefällt, geben Sie ihm einen Stern , und ich werde verstehen, dass meine Arbeit nützlich und wirklich eine Fortsetzung wert ist. Normalerweise empfehle ich, mein Github-Konto zu abonnieren . Durch ihn führe ich meine gesamte Arbeit an Open Source und alle Demoprojekte durch, die meine Artikel stets begleiten. Vielen Dank an alle fürs Lesen. Das nächste Mal werden wir unsere Bewerbung schreiben. In Zukunft wird es einige notwendige Theorien zu Docker geben, aber wir werden sie durch die Praxis stark verwässern.Nützliche Links
Heutzutage gibt es nicht viele nützliche Links. Schauen Sie sich Evgeniys Video an, es lohnt sich wirklich!- Website zum Erstellen von Projekten zum Thema Frühling
- Evgeniy Borisov – Frühlingsbauer
- Dokumentation im Frühjahr für Flyway
GO TO FULL VERSION