Un article d'une série sur la création d'un projet Java (les liens vers d'autres documents se trouvent à la fin). Son objectif est d'analyser les technologies clés, le résultat est d'écrire un robot télégramme. Dans cette partie, nous essayons de lancer SpringBoot et Flyway. Le minimum de théorie, comme vous le souhaitez))) Nous omettons la comparaison finale de Flyway/Liquibase pour une période de temps indéfinie et allons droit au but. Et pourtant, cela a déjà traîné. Afin de ne pas décrire Flyway deux fois, j'ai décidé de l'ajouter immédiatement à notre futur projet JRTB.
multifacette, multimodulaire :
Que devons-nous faire dans ce cadre ?
- Lancez une application SpringBoot basée sur Maven.
- Ajoutez-y Flyway : heureusement, ils s’intègrent facilement.
- Ajoutez un schéma pour les tables que nous avons dans la base de données exemple.
Qu'est-ce que la voie de migration
Pour utiliser quelque chose, vous devez d’abord comprendre de quoi il s’agit et pourquoi. Flyway est un outil de contrôle de version de base de données. Les mots sont bien connus, mais d’une manière ou d’une autre, la compréhension n’a pas été ajoutée, n’est-ce pas ? Essayons de décrire le problème que résout la voie de migration. Disons que nous avons un projet. Comme tout dans notre monde, ce n'est pas parfait, il n'a donc pas été possible de planifier et d'élaborer la version finale du projet. À chaque fois, certaines nuances inexpliquées apparaissent. Le projet utilise une base de données dans son travail. Bien entendu, si le projet change, la structure de la base de données peut également changer. Disons que nous ajoutons un nouveau champ pour l'une des entités de notre projet. Comment faire?- Ajoutez ce champ à notre entité, mettez tout à jour pour que la logique métier fonctionne.
- Mettez à jour la base de données. La seule façon possible est de le faire manuellement. Pour ce faire, vous devez entrer et enregistrer le script SQL nécessaire.
- Mais si nous avons plus d’un endroit où nous déployons notre projet, cela doit-il être fait dans chacun d’entre eux ?
- et si nous voulons revenir en arrière, comment savoir exactement dans quel état se trouve actuellement la structure de la base de données ?
- Comment serons-nous sûrs que le changement de base de données a réussi ?
- Comment puis-je avoir la possibilité de suivre toutes les modifications de la base de données survenues sur le projet ?
Lancez SpringBoot + Flyway
Qu'est-ce que Spring Boot
Que lançons-nous ?... Pour comprendre ce que nous faisons et pourquoi, vous devez décider ce qu'est SpringBoot. Tout d’abord, parlons rapidement (enfin, très rapidement) de Spring . À l’heure actuelle, il s’agit de la norme industrielle de facto en matière de développement d’applications serveur en Java. Norme de quoi ? Comment puis-je vous expliquer cela ? Spring est le squelette de l'application, sur lequel nous jetons ensuite la « viande » - notre logique métier. Avec l'aide de Spring (ci-après j'utiliserai ce papier calque pour ne pas perdre de temps à changer de langue :D)) Spring nous donne un point de départ à partir duquel nous commençons à tout faire. Il est- Voulez-vous travailler avec une base de données ? Envie de relationnel ? Voulez-vous du non relationnel ? Nous voici avec Spring Data.
- Voulez-vous travailler avec des requêtes http ? Et voilà, Spring Web (Spring MVC).
- Avez-vous besoin d'un conteneur pour tous vos objets en un seul endroit ? Voici Spring Core.
- Avez-vous besoin de mettre en place la sécurité sur un projet afin qu'il y ait différents rôles et chaînes de commandement ? Sécurité du printemps.
- Juste au moment où vous pensiez que ce serait bien d'avoir une telle chose, il s'avère que Spring a déjà ce dont vous avez besoin et qu'il s'intègre rapidement et facilement.
Lancement de SpringBoot
Puisque nous avons déjà compris ce qu'est Maven, créons un nouveau projet pour nos besoins. Pour cela, il vous suffit de vous rendre sur un site internet spécialement créé à cet effet. Cela s'appelle Spring Initializr . Ici, vous devez remplir et sélectionner ce dont vous avez besoin :- L'outil de construction de projet est Gradle ou Maven. Comme vous pouvez le constater, Ant n’est même plus mentionné. C'est un bon indice sur les outils de construction qui valent la peine.
- Le langage dans lequel vous pouvez écrire est Java, Kotlin, groovy. Tout est simple ici : ils sont tous de type JVM et exécutent facilement du code Java. Soit dit en passant, cela vaut la peine de regarder Kotlin. Le Groovy est franchement devenu inintéressant (il fut un temps où ils passaient au groove, mais c'est vite passé).
- Version Spring... Ici, vous devez comprendre que les versions de la partie principale de Spring et de ses modules sont cohérentes.
- Données du projet. J'ai déjà décrit ces choses.
- Nous choisissons quelles archives seront collectées - Jar ou War.
- Eh bien, la version Java de notre préférée. Et récemment, il y a eu beaucoup de ces versions... Elles ont attendu des années, et maintenant il y en a deux par an.
- Maven - ce n'est pas pour rien que nous vous en avons parlé plus tôt.
- Java est notre chéri :D
- Prenons la version 2.2.11. Pourquoi pas le plus récent ? Parce que plus il est récent, plus il y a de chances qu’il y ait des bugs. Pour nous, peu importe la version, mais l’ancienne sera plus fiable. Par conséquent, nous choisissons 2.2.11.
- Groupe : com.github.javarushcommunity
- Artefact : springboot-flyway-demo
- Nom : Démo SpringBoot + Flyway
- Description : le projet démontre l'intégration entre SpringBoot et Flyway . (Oui, la capacité de rédiger de la documentation est une partie importante du développement :))
- Nom du package : com.github.javarushcommunity.springbootflywaydemo . Ici, ils créeront immédiatement pour nous un package de base avec une classe qui lancera notre application.
- Conditionnement : Pot
- Java : 8. N'allons pas devancer la locomotive et prenons le bon vieux huit. Pourquoi pas 11 ? Pourquoi? Pour notre exemple, je ne vois pas l’intérêt.
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
Nous exécutons à nouveau la méthode principale et obtenons : Nous devons maintenant ajouter au moins une migration. Pour créer correctement une migration, vous devez prendre le modèle suivant : V<VERSION>__<NOM>.sql A l'aide de ce modèle, nous allons créer un fichier de migration nommé V00001__Create_country_table.sql dans le dossier approprié : /src/main/resources/ db.migration/ . Créons-y une table de pays. Prenons le script du deuxième article sur la base de données . Avant de commencer, créons une base de données pour le travail : flyway_demo_db. Faisons cela via MysqlWorkbench : nous pouvons maintenant exécuter à nouveau la méthode principale : tout s'est bien passé, mais comme nous n'avons encore rien dans le projet, il a fini de fonctionner. Cependant, il ressort clairement des journaux ( lisez ce que sont les journaux ) que :
- Connexion réussie à la base de données.
- La migration a été validée et tout est ok.
- Flyway a créé un tableau pour gérer les migrations.
- Et quelle migration 00001 a commencé - la création du pays a été réussie.
Conclusion
Cette fois, nous avons appris à comprendre et à utiliser un outil de migration de base de données en conjonction avec SpringBoot. Ces informations sont nécessaires pour comprendre ce qu'est un outil de contrôle de version de base de données, en utilisant Flyway comme exemple. Amis, le code source du projet que j'ai montré est publié dans notre organisation sur Github . Si vous aimez l'exemple, donnez-lui une étoile et je comprendrai que mon travail est utile et vaut vraiment la peine d'être poursuivi. Traditionnellement, je suggère de m'abonner à mon compte Github . Grâce à lui, je mène tous mes travaux sur l'open source et tous ces projets de démonstration qui accompagnent invariablement mes articles. Merci à tous d'avoir lu. La prochaine fois, nous rédigerons notre candidature. Il y aura une certaine théorie nécessaire sur Docker à l'avenir, mais nous la diluerons fortement avec la pratique.Liens utiles
Aujourd'hui, il n'y a pas beaucoup de liens utiles. Faites attention à la vidéo d'Evgeniy, ça vaut vraiment le coup !- Site de création de projets sur Spring
- Evgeniy Borisov — Constructeur de ressorts
- Documentation au printemps pour Flyway
GO TO FULL VERSION