Fahren Sie mit dem vorherigen Artikel fort [So erstellen Sie eine Docker-Umgebung mit Gradle for IntelliJ], und legen Sie die Einstellungen so fest, dass beim Start der Anwendung automatisch Tabellen in der Datenbank erstellt werden. Machen.
Im vorherigen Artikel habe ich sogar eine Datenbank mit dem Namen ** todo ** in der Datenbank erstellt.
Überprüfen Sie, ob es in Plugins ** Flyway ** und in Abhängigkeiten ** Flyway-Core ** gibt.
build.gradle
plugins {
id 'java'
id 'org.springframework.boot' version '2.3.1.BUILD-SNAPSHOT'
id 'io.spring.dependency-management' version '1.0.9.RELEASE'
id 'com.avast.gradle.docker-compose' version '0.12.1'
id 'org.flywaydb.flyway' version '6.4.3' //Hier
}
// ...Abkürzung
dependencies {
implementation 'org.springframework.boot:spring-boot-starter-data-jdbc'
implementation 'org.springframework.boot:spring-boot-starter-thymeleaf'
implementation 'org.springframework.boot:spring-boot-starter-web'
implementation 'org.flywaydb:flyway-core' //Hier
developmentOnly 'org.springframework.boot:spring-boot-devtools'
runtimeOnly 'mysql:mysql-connector-java'
testImplementation('org.springframework.boot:spring-boot-starter-test') {
exclude group: 'org.junit.vintage', module: 'junit-vintage-engine'
}
}
https://github.com/miyabayt/spring-boot-doma2-sample Die Einstellungen des Repositorys werden unverändert verwendet. Ich habe die Teile entfernt, die ich jetzt nicht brauche, wie z. B. Doma.
applocation.yml
#Definieren Sie allgemeine Einstellungen
spring:
profiles:
#Geben Sie den Standard explizit an
default: local
active: local
main:
#Temporäre Unterstützung für das Überschreiben von Bean von DataValueProcessor
allow-bean-definition-overriding: true
messages:
#Legen Sie den Pfad der Nachrichtendefinitionsdatei fest
basename: messages,ValidationMessages,PropertyNames
cache-duration: -1
encoding: UTF-8
jackson:
#Machen Sie den JSON-Schlüssel zu einer durch Unterstriche getrennten Zeichenfolge
property-naming-strategy: CAMEL_CASE_TO_LOWER_CASE_WITH_UNDERSCORES
thymeleaf:
#Der HTML5-Modus ist veraltet. Wechseln Sie daher in den HTML-Modus
mode: HTML
resources:
#Statischen Inhalt zwischenspeichern
cache:
period: 604800
chain:
#Verwenden Sie alle Ressourcen, die GZiped sind
compressed: true
strategy:
content:
#Versionierung durch MD5-Hashwert des Inhalts
enabled: true
paths: /**
servlet:
multipart:
#Legen Sie die Upload-Größenbeschränkung fest
max-file-size: 5MB
max-request-size: 5MB
datasource:
driver-class-name: com.mysql.jdbc.Driver
hikari:
autoCommit: false
connectionTimeout: 30000
idleTimeout: 30000
maxLifetime: 1800000
connectionTestQuery: SELECT 1
minimumIdle: 10
maximumPoolSize: 30
jmx:
enabled: false
server:
port: 18082 #Geändert von 18081
compression:
enabled: true
servlet:
session:
timeout: 7200
#Geben Sie die Sitzungs-ID nicht in der URL aus
tracking-modes: cookie
contextPath: /
logging:
pattern:
#Geben Sie den in MDC eingestellten Wert aus
level: "[%X{FUNCTION_NAME}:%X{X-Track-Id}:%X{LOGIN_USER_ID}] %5p"
#Anwendungseinstellungen
application:
fileUploadLocation: build/todo #Wechsel von Probe
Nehmen Sie Einstellungen für lokal vor. Fügen Sie hier die Informationen der Docker-Datenbank hinzu, die im vorherigen Artikel erstellt wurden. (Dies ist der Teil von ** # change **)
url jdbc:mysql://127.0.0.1:[port]/[DB_name]?useSSL=false&characterEncoding=UTF-8 ** [Port] ** ist die in den Ports in docker-compose.yml angegebene Nummer ** [DB_name] ** ist der Tabellenname (MYSQL_DATABASE), der in der Umgebung von docker-compose.yml angegeben ist
** Benutzername und Passwort ** Benutzername (MYSQL_ROOT_USER) und Passwort (MYSQL_ROOT_PASSWORD), die in der Umgebung von docker-compose.yml angegeben sind
application-local.yml
#Einstellungen für lokal
spring:
profiles: local
messages:
cache-duration: -1
datasource:
platform: mysql
driver-class-name: com.mysql.jdbc.Driver
url: jdbc:mysql://127.0.0.1:33068/todo?useSSL=false&characterEncoding=UTF-8 #Veränderung
username: root #Veränderung
password: passw0rd #Veränderung
resources:
#Den Cache ungültig machen
cache:
period: 0
flyway:
enable: true
baseline-on-migrate: true
placeholder-replacement: false
logging:
level:
org.springframework: INFO
org.springframework.jdbc: INFO
org.thymeleaf: INFO
com.example: DEBUG # com.Wechsel von Probe
####
#Anwendungseinstellungen
application:
fileUploadLocation: build/todo #Wechsel von Probe
cors:
allowedHeaders: "Origin, X-Requested-With, Content-Type, Accept, X-XSRF-TOKEN"
allowedMethods: "POST, GET, PUT, OPTIONS, DELETE"
allowedOrigins: "*" #Geben Sie den Domänennamen an, der CORS zulässt
Flyway-Core-Dokumentation Wie in der Dokumentation angegeben, haben SQL-Dateien Namenskonventionen. Dieses Mal habe ich die folgenden zwei SQL-Dateien erstellt.
Der Standardspeicherort ist "Ressource> Datenbank> Migration".
R__0_create_tables.sql
CREATE TABLE IF NOT EXISTS users(
user_id INT(11) NOT NULL AUTO_INCREMENT COMMENT 'Benutzeridentifikation'
, first_name VARCHAR(40) NOT NULL COMMENT 'Name'
, last_name VARCHAR(40) NOT NULL COMMENT 'Familienname, Nachname'
, email VARCHAR(100) UNIQUE DEFAULT NULL COMMENT 'Mail Adresse'
, password VARCHAR(100) DEFAULT NULL COMMENT 'Passwort'
, role VARCHAR(100) DEFAULT NULL COMMENT 'Behörde'
, created_at DATETIME NOT NULL COMMENT 'Eingetragenes Datum'
, updated_by VARCHAR(50) DEFAULT NULL COMMENT 'Wechsler'
, updated_at DATETIME DEFAULT NULL COMMENT 'Datum und Uhrzeit aktualisieren'
, deleted_by VARCHAR(50) DEFAULT NULL COMMENT 'Löschen'
, deleted_at DATETIME DEFAULT NULL COMMENT 'Datum und Uhrzeit löschen'
, version INT(11) unsigned NOT NULL DEFAULT 1 COMMENT 'Revisionsnummer'
, PRIMARY KEY (user_id)
, KEY idx_users (email, deleted_at)
) COMMENT='Nutzer';
R__1_insert_datas.sql
INSERT INTO `users` VALUES
(1,'Yamada','Hanako','[email protected]','passw0rd',NULL,NOW(),NULL,NULL,NULL,NULL,1),
(2,'Suzuki','Taro','[email protected]','passw0rd',NULL,NOW(),NULL,NULL,NULL,NULL,1);
Das Passwort ist hier nicht verschlüsselt, so wie es ist. Ich werde es im nächsten Artikel tun.
Öffnen Sie ein IntelliJ-Terminal und führen Sie ./gradlew bootRun
aus.
$ ./gradlew bootRun
> Task :bootRun
. ____ _ __ _ _
/\\ / ___'_ __ _ _(_)_ __ __ _ \ \ \ \
( ( )\___ | '_ | '_| | '_ \/ _` | \ \ \ \
\\/ ___)| |_)| | | | | || (_| | ) ) ) )
' |____| .__|_| |_|_| |_\__, | / / / /
=========|_|==============|___/=/_/_/_/
:: Spring Boot :: (v2.3.1.BUILD-SNAPSHOT)
...Abkürzung
2020-06-13 22:15:41.439 [::] INFO 78329 --- [io-18082-exec-1] o.s.web.servlet.DispatcherServlet : Completed initialization in 7 ms
<=========----> 75% EXECUTING [10m 10s]
> :bootRun
Wenn es im Terminal so aussieht, ist es erfolgreich. Die Zahl nach ** EXECUTING ** ist die Startzeit, daher funktioniert es weiter.
Wenn die folgende Anzeige angezeigt wird, liegt ein Fehler vor. Überprüfen Sie daher den Fehler.
BUILD SUCCESSFUL in 5s
3 actionable tasks: 2 executed, 1 up-to-date
[Vorheriger Artikel](https://qiita.com/megumi_622/items/341cfbb684256e7c4dbc#%E3%83%86%E3%83%BC%E3%83%96%E3%83%AB%E3%81%AE % E7% A2% BA% E8% AA% 8D) Geben Sie MySQL in den Container ein und überprüfen Sie die Tabelle.
Wenn der Benutzer wie unten gezeigt registriert ist, ist er erfolgreich.
mysql> select * from users;
+---------+------------+-----------+---------------+-----------+------+----------------------+------------+------------+------------+------------+---------+
| user_id | first_name | last_name | email | password | role | created_at | updated_by | updated_at | deleted_by | deleted_at | version |
+---------+------------+-----------+---------------+-----------+------+----------------------+------------+------------+------------+------------+---------+
| 1 |Yamada|Hanako| [email protected] | passw0rd | NULL | 2020-06-13 22:05:03 | NULL | NULL | NULL | NULL | 1 |
| 2 |Suzuki|Taro| [email protected] | passw0rd | NULL | 2020-06-13 22:05:03 | NULL | NULL | NULL | NULL | 1 |
+---------+-----------+-------------+----------------+----------+------+---------------------+-----------+------------+-------------+------------+---------+
2 rows in set (0.01 sec)
Nächstes Mal erstellen wir einen ** Anmeldebildschirm **.
Recommended Posts