Spring Boot - Flyway-Datenbank
Flyway ist eine Versionskontrollanwendung, mit der Sie Ihr Datenbankschema einfach und zuverlässig für alle Ihre Instanzen entwickeln können. Um mehr über Flyway zu erfahren, können Sie den Link www.flywaydb.org verwenden
Viele Softwareprojekte verwenden relationale Datenbanken. Dies erfordert die Behandlung von Datenbankmigrationen, die häufig auch als Schemamigrationen bezeichnet werden.
In diesem Kapitel erfahren Sie ausführlich, wie Sie die Flyway-Datenbank in Ihrer Spring Boot-Anwendung konfigurieren.
Flyway-Datenbank konfigurieren
Laden Sie zunächst das Spring Boot-Projekt von der Spring Initializer-Seite www.start.spring.io herunter und wählen Sie die folgenden Abhängigkeiten aus:
- Spring Boot Starter Web
- Flyway
- MySQL
- JDBC
Maven-Benutzer können die folgenden Abhängigkeiten in die Datei pom.xml einfügen.
<dependency>
<groupId>org.flywaydb</groupId>
<artifactId>flyway-core</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-jdbc</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
Gradle-Benutzer können die folgenden Abhängigkeiten in die Datei build.gradle einfügen.
compile('org.flywaydb:flyway-core')
compile('org.springframework.boot:spring-boot-starter-jdbc')
compile('org.springframework.boot:spring-boot-starter-web')
compile('mysql:mysql-connector-java')
In den Anwendungseigenschaften müssen die Datenbankeigenschaften zum Erstellen einer DataSource sowie die Flyway-Eigenschaften konfiguriert werden, die in den Anwendungseigenschaften konfiguriert werden müssen.
Fügen Sie für Benutzer von Eigenschaftendateien die folgenden Eigenschaften in die Datei application.properties ein.
spring.application.name = flywayapp
spring.datasource.driverClassName = com.mysql.jdbc.Driver
spring.datasource.url = jdbc:mysql://localhost:3306/USERSERVICE?autoreconnect=true
spring.datasource.username = root
spring.datasource.password = root
spring.datasource.testOnBorrow = true
spring.datasource.testWhileIdle = true
spring.datasource.timeBetweenEvictionRunsMillis = 60000
spring.datasource.minEvictableIdleTimeMillis = 30000
spring.datasource.validationQuery = SELECT 1
spring.datasource.max-active = 15
spring.datasource.max-idle = 10
spring.datasource.max-wait = 8000
flyway.url = jdbc:mysql://localhost:3306/mysql
flyway.schemas = USERSERVICE
flyway.user = root
flyway.password = root
YAML-Benutzer können der Datei application.yml die folgenden Eigenschaften hinzufügen.
spring:
application:
name: flywayapp
datasource:
driverClassName: com.mysql.jdbc.Driver
url: "jdbc:mysql://localhost:3306/USERSERVICE?autoreconnect=true"
password: "root"
username: "root"
testOnBorrow: true
testWhileIdle: true
timeBetweenEvictionRunsMillis: 60000
minEvictableIdleTimeMillis: 30000
validationQuery: SELECT 1
max-active: 15
max-idle: 10
max-wait: 8000
flyway:
url: jdbc:mysql://localhost:3306/mysql
schemas: USERSERVICE
user: "root"
password: "root"
Erstellen Sie nun eine SQL-Datei unter dem src/main/resources/db/migrationVerzeichnis. Nennen Sie die SQL-Datei "V1__Initial.sql".
CREATE TABLE USERS (ID INT AUTO_INCREMENT PRIMARY KEY, USERID VARCHAR(45));
INSERT INTO USERS (ID, USERID) VALUES (1, 'tutorialspoint.com');
Der Hauptcode der Spring Boot-Anwendungsklassendatei ist unten angegeben -
package com.tutorialspoint.flywayapp;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
@SpringBootApplication
public class FlywayappApplication {
public static void main(String[] args) {
SpringApplication.run(FlywayappApplication.class, args);
}
}
Die vollständige Build-Konfigurationsdatei finden Sie unten.
Maven – pom.xml
<?xml version = "1.0" encoding = "UTF-8"?>
<project xmlns = "http://maven.apache.org/POM/4.0.0"
xmlns:xsi = "http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation = "http://maven.apache.org/POM/4.0.0
http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.tutorialspoint</groupId>
<artifactId>flywayapp</artifactId>
<version>0.0.1-SNAPSHOT</version>
<packaging>jar</packaging>
<name>flywayapp</name>
<description>Demo project for Spring Boot</description>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>1.5.9.RELEASE</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
<java.version>1.8</java.version>
</properties>
<dependencies>
<dependency>
<groupId>org.flywaydb</groupId>
<artifactId>flyway-core</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-jdbc</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
</project>
Gradle – build.gradle
buildscript {
ext {
springBootVersion = '1.5.9.RELEASE'
}
repositories {
mavenCentral()
}
dependencies {
classpath("org.springframework.boot:spring-boot-gradle-plugin:${springBootVersion}")
}
}
apply plugin: 'java'
apply plugin: 'eclipse'
apply plugin: 'org.springframework.boot'
group = 'com.tutorialspoint'
version = '0.0.1-SNAPSHOT'
sourceCompatibility = 1.8
repositories {
mavenCentral()
}
dependencies {
compile('org.flywaydb:flyway-core')
compile('org.springframework.boot:spring-boot-starter-jdbc')
compile('org.springframework.boot:spring-boot-starter-web')
compile('mysql:mysql-connector-java')
testCompile('org.springframework.boot:spring-boot-starter-test')
}
Sie können eine ausführbare JAR-Datei erstellen und die Spring Boot-Anwendung mit den unten angegebenen Maven- oder Gradle-Befehlen ausführen.
Für Maven können Sie den hier gezeigten Befehl verwenden -
mvn clean install
Nach "BUILD SUCCESS" finden Sie die JAR-Datei im Zielverzeichnis.
Für Gradle können Sie den hier gezeigten Befehl verwenden -
gradle clean build
Nach "BUILD SUCCESSFUL" finden Sie die JAR-Datei im Verzeichnis build / libs.
Führen Sie nun die JAR-Datei mit dem folgenden Befehl aus:
java –jar <JARFILE>
Jetzt wurde Tomcat auf dem Port 8080 gestartet und im Konsolenfenster können Sie die hier gezeigten Flyway-Datenbankprotokolle sehen.
Sie können jetzt zur Datenbank gehen und die ausgewählten Abfragen durchführen.