Un articolo tratto da una serie sulla creazione di un progetto Java (i collegamenti ad altri materiali sono alla fine). Il suo obiettivo è analizzare le tecnologie chiave, il risultato è scrivere un bot di Telegram. In questa parte proviamo a lanciare SpringBoot e Flyway. Il minimo di teoria, come preferisci))) Tralasciamo il confronto finale Flyway/Liquibase per un periodo di tempo indefinito e arriviamo al dunque. E anche così la situazione si è già trascinata. Per non descrivere Flyway due volte, ho deciso di aggiungerlo immediatamente al nostro futuro progetto JRTB.
multiforme, multimodulare:
Cosa dobbiamo fare in questo contesto?
- Avvia un'applicazione SpringBoot basata su Maven.
- Aggiungi Flyway lì: fortunatamente si integrano facilmente.
- Aggiungi uno schema per le tabelle che abbiamo nel database di esempio.
Cos'è la flyway
Per usare qualcosa, devi prima capire di cosa si tratta e perché. Flyway è uno strumento di controllo della versione del database. Le parole sono ben note, ma in qualche modo la comprensione non è stata aggiunta, giusto? Proviamo a descrivere il problema risolto da Flyway. Diciamo che abbiamo un progetto. Come ogni cosa nel nostro mondo, non è perfetta, quindi non è stato possibile pianificare e redigere la versione finale del progetto. Ogni volta appaiono alcune sfumature inesplicabili. Il progetto utilizza un database nel suo lavoro. Naturalmente, se cambia il progetto, può cambiare anche la struttura del database. Diciamo che aggiungiamo un nuovo campo per una delle entità nel nostro progetto. Come farlo?- Aggiungi questo campo alla nostra entità, aggiorna tutto in modo che la logica aziendale funzioni.
- Aggiorna il database. L'unico modo possibile è farlo manualmente. Per fare ciò, devi entrare e registrare lo script SQL necessario.
- Ma se abbiamo più di un luogo in cui implementiamo il nostro progetto, allora è necessario farlo in ciascuno di essi?
- e se vogliamo tornare indietro, come facciamo a sapere esattamente in quale stato si trova la struttura del database adesso?
- Come possiamo essere sicuri che la modifica del database abbia avuto successo?
- Come posso avere l'opportunità di tenere traccia di tutte le modifiche al database avvenute nel progetto?
Avvia SpringBoot + Flyway
Cos'è lo Spring Boot
Cosa stiamo lanciando?... Per capire cosa e perché stiamo facendo, devi decidere cos'è SpringBoot. Per prima cosa parliamo velocemente (beh, molto velocemente) della Primavera . Al momento, è di fatto lo standard industriale nello sviluppo di applicazioni server in Java. Standard di cosa? Come posso spiegartelo? Spring è lo scheletro dell'applicazione, sul quale poi gettiamo la “carne”: la nostra logica aziendale. Con l'aiuto di Spring (d'ora in poi utilizzerò questo lucido per non perdere tempo a cambiare lingua :D)) Spring ci dà uno spunto da cui iniziamo a fare tutto. È- Vuoi lavorare con un database? Vuoi relazionale? Vuoi non relazionale? Eccoci con Spring Data.
- Vuoi lavorare con le richieste http? Ecco qua, Spring web (Spring MVC).
- Hai bisogno di un contenitore per tutti i tuoi oggetti in un unico posto? Ecco Spring Core.
- Hai bisogno di impostare la sicurezza su un progetto in modo che ci siano ruoli e catene di comando diversi? Sicurezza primaverile.
- Proprio quando pensavi che sarebbe stato bello avere una cosa del genere, si scopre che Spring ha già ciò di cui hai bisogno e si integra rapidamente e facilmente.
Avvio di SpringBoot
Dato che abbiamo già capito cos'è Maven, creiamo un nuovo progetto per le nostre esigenze. Per fare ciò, devi solo visitare un sito Web creato appositamente per questa materia. Si chiama Spring Inizializr . Qui devi compilare e selezionare ciò di cui hai bisogno:- Lo strumento di creazione del progetto è Gradle o Maven. Come puoi vedere, Ant non viene nemmeno più menzionata. Questo è un buon suggerimento su quali strumenti di creazione valgono il tuo tempo.
- La lingua in cui puoi scrivere è Java, Kotlin, Groovy. Qui tutto è semplice: sono tutti simili a JVM ed eseguono facilmente il codice Java. A proposito, vale la pena dare un'occhiata a Kotlin. Groovy è francamente diventato poco interessante (c'è stato un tempo in cui sono passati al groove, ma è passato rapidamente).
- Versione Spring... Qui devi capire che le versioni della parte principale di Spring e dei suoi moduli sono coerenti.
- Dati del progetto. Ho già descritto queste cose.
- Scegliamo quale archivio verrà raccolto: Jar o War.
- Bene, la versione Java del nostro preferito. E recentemente ce ne sono state molte di queste versioni... Hanno aspettato anni, e ora ce ne sono due all'anno.
- Maven, non per niente te ne abbiamo parlato prima.
- Java è il nostro tesoro: D
- Prendiamo la versione 2.2.11. Perché non quello più recente? Perché più è nuovo, maggiore è la possibilità che ci siano dei bug lì. Per noi non importa quale versione, ma quella più vecchia sarà più affidabile. Pertanto, scegliamo 2.2.11.
- Gruppo: com.github.javarushcommunity
- Artefatto: demo di springboot-flyway
- Nome: SpringBoot + Demo Flyway
- Descrizione: il progetto dimostra l'integrazione tra SpringBoot e Flyway . (Sì, la capacità di scrivere documentazione è una parte importante dello sviluppo :))
- Nome del pacchetto: com.github.javarushcommunity.springbootflywaydemo . Qui creeranno subito per noi un pacchetto base con una classe che lancerà la nostra applicazione.
- Confezione: barattolo
- Java: 8. Non andiamo avanti alla locomotiva e prendiamo il buon vecchio otto. Perché non 11? Per che cosa? Per il nostro esempio, non vedo il 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
Eseguiamo nuovamente il metodo main e otteniamo: Ora dobbiamo aggiungere almeno una migrazione. Per creare correttamente una migrazione, è necessario prendere il seguente modello: V<VERSION>__<NAME>.sql Utilizzando questo modello, creeremo un file di migrazione denominato V00001__Create_country_table.sql nella cartella appropriata: /src/main/resources/ db.migrazione/ . Creiamo una tabella country al suo interno. Prendiamo lo script dal secondo articolo sul database . Prima di iniziare entriamo e creiamo un database per il lavoro: flyway_demo_db. Facciamolo tramite MysqlWorkbench: ora possiamo eseguire nuovamente il metodo principale: tutto ha funzionato, ma poiché non abbiamo ancora nulla nel progetto, ha finito di funzionare. Tuttavia, dai log risulta chiaro ( leggi cosa sono i log ) che:
- Connessione al database riuscita.
- La migrazione è stata convalidata e tutto è ok.
- Flyway ha creato una tabella per gestire le migrazioni.
- E ciò che è iniziato con la migrazione 00001: la creazione del paese ha avuto successo.
Conclusione
Questa volta abbiamo imparato a comprendere e utilizzare uno strumento di migrazione del database insieme a SpringBoot. Queste informazioni sono necessarie per comprendere cos'è uno strumento di controllo della versione del database, utilizzando Flyway come esempio. Amici, il codice sorgente del progetto che vi ho mostrato è pubblicato nella nostra organizzazione su Github . Se l'esempio ti piace, dagli una stella , e capirò che il mio lavoro è utile e vale davvero la pena continuare. Tradizionalmente, suggerisco di iscrivermi al mio account Github . Attraverso di lui conduco tutto il mio lavoro sull'open source e tutti quei progetti dimostrativi che invariabilmente accompagnano i miei articoli. Grazie a tutti per aver letto. La prossima volta scriveremo la nostra candidatura. Ci sarà qualche teoria necessaria su Docker in futuro, ma la diluiremo pesantemente con la pratica.link utili
Oggi non ci sono molti link utili. Fate attenzione al video di Evgeniy, ne vale davvero la pena!- Sito web per la creazione di progetti in primavera
- Evgeniy Borisov — Costruttore di molle
- Documentazione in primavera per Flyway
GO TO FULL VERSION