[JAVA] Memorandum beim Spring Boot 1.5.10 → Spring Boot 2.0.0

Einführung

Die WEB-Anwendung, an der ich arbeite, war Spring Boot 1.5.10, aber da 2.0.0 veröffentlicht wurde, aktualisieren wir sie. Es ist ein Memorandum von dem, was ich damals gemacht habe. Hinweis) Es wird nur beschrieben, was für die im Aufbau befindliche WEB-Anwendung erforderlich ist.

(4/18 postscript) Da in Version 5.0.4 des in 2.0.0 verwendeten Spring Framework eine Sicherheitsanfälligkeit gefunden wurde, wurde sie auf 2.0.1 aktualisiert, die unterstützte Version 5.0.5. Weitere Informationen (https://www.jpcert.or.jp/at/2018/at180014.html)

Grobe Veränderungen

Spring4 → Spring5

Der folgende Artikel war sehr hilfreich für die Änderungen in Spring5. Referenz) Zusammenfassung der wichtigsten Änderungen in Spring Framework 5.0

** Java 8 oder höher erforderlich **

Java war ursprünglich 8, hatte also keine Wirkung.

Thymeleaf2 → Thymeleaf3

Es war vielleicht der einflussreichste Teil der App, die ich gemacht habe.

Über das, was ich speziell gemacht habe

Vorerst habe ich die Spring Boot-Version von gradle auf 2.0.0 gesetzt und auf Wild: smirk: ohne Änderungen geändert. Ich habe in Eile einen Fehler erhalten, daher werde ich mir das Verfahren richtig ansehen und es der Reihe nach lösen.

Gute Jungs sollten den [Migrate Guide] von Spring Boot 2.0 (https://github.com/spring-projects/spring-boot/wiki/Spring-Boot-2.0-Migration-Guide) sorgfältig lesen und den Raum lesen. Aufhellen und ausprobieren.

1. Upgrade von gradlew

4.x oder höher ist erforderlich. Aus irgendeinem Grund war es 2.x Gradlew, also wird es dort natürlich Moos sein. (Der Verbrecher bin ich)

Aktualisieren Sie die Wrapper-Task-Version.

build.gradle

task wrapper(type: Wrapper) {
    gradleVersion = '4.6' //Version 4.Auf x oder höher einstellen
}

Fügen Sie build.gradle eine Wrapper-Aufgabe hinzu und führen Sie den Befehl `gradle wrapper `aus, um die Version 4.x oder höher zu erstellen. Sie können jetzt gradlew verwenden, um SpringBoot 2.0.0-Anwendungen zu erstellen.

Referenz) Spring-Boot-2.0-Versionshinweise # gradle-plugin

2. Spezifikationsänderung des Spring-Boot-Gradle-Plugins

apply plugin: 'org.springframework.boot'
apply plugin: 'io.spring.dependency-management' // <-- add this to your build.gradle

Mit dem Versions-Upgrade wird das Plug-In für das Abhängigkeitsmanagement anscheinend nicht mehr automatisch angewendet. Sie müssen es explizit lesen. Befolgen Sie daher die Anweisungen, um eine Zeile hinzuzufügen.

Referenz) [Spring-Boot-2.0-Migrationshandbuch # spring-boot-gradle-plugin](https://github.com/spring-projects/spring-boot/wiki/Spring-Boot-2.0-Migration-Guide # Spring-Boot-Gradle-Plugin)

3. Spezifikationsänderung von application.yml (Eigenschaften)

Es scheint ein Check-Tool namens Spring-Boot-Properties-Migrator zu geben.

Vorübergehend zur Abhängigkeit von build.gradle hinzugefügt.

Gradle Build und starten Sie Spring Boot Application. Dann erscheint eine unbekannte Meldung auf der Konsole. Es informiert Sie über Eigenschaften, deren Namen geändert wurden, und über Dinge, die verschwunden sind.

Referenz) [Spring-Boot-2.0-Migrationshandbuch # vor dem Start](https://github.com/spring-projects/spring-boot/wiki/Spring-Boot-2.0-Migration-Guide#before- Sie starten)

  1. hibernate validator Die Annotation NotEmpty des Validators für den Ruhezustand wurde nicht mehr unterstützt. Es hat mich nicht betroffen, weil ich es nicht verwendet habe, aber es scheint, dass Anmerkungen wie NotBlank, Email und ModCheck neben NotEmpty auch veraltet sind.

use the standard NotEmpty constraint instead

Weil es so ist, habe ich es so korrigiert.

Referenz) Hibernate Validator --Deprecated API

5. Spring Mvc JavaConfig

WebMvcConfigurerAdapter ist veraltet.

Referenz) Spring-javadoc WebMvcConfigurerAdapter.java

as of 5.0 WebMvcConfigurer has default methods (made possible by a Java 8 baseline) and can be implemented directly without the need for this adapter.

Es heißt, dass die WebMvcConfigurer-Oberfläche jetzt eine Standardmethode hat, sodass Sie keinen Adapter mehr benötigen.

** WebMvcConfig.java vor der Änderung **

WebMvcConfig vor der Änderung.java


@Configuration
public class WebMvcConfig extends WebMvcConfigurerAdapter
{
    //Abkürzung
}

** Geänderte WebMvcConfig.java **

WebMvcConfig nach Änderung.java


@Configuration
public class WebMvcConfig implements WebMvcConfigurer
{
    //Abkürzung
}
  1. SpringSecurity

Referenz) https://docs.spring.io/spring-security/site/docs/5.0.3.RELEASE/reference/htmlsingle/ Referenz) https://spring.io/blog/2017/09/15/security-changes-in-spring-boot-2-0-m4 TODO: Fassen Sie den Inhalt zusammen ... vielleicht.

7. Verschiedene Thymeleaf

JavaConfig Ich habe es nicht geschafft, also hat es mich nicht betroffen, aber bitte beachten Sie, dass es für diejenigen, die es schaffen, eine Veränderung zu geben scheint.

Es wird ausführlich in Abschnitt 2 beschrieben. Konfigurationsänderungen des Migrationshandbuchs unten. Referenz) Thymeleaf 3 zehnminütiger Migrationsleitfaden

Dialect

Dies hat sich sehr geändert und der alte war Fehler Zammai: open_hands_tone1:. Ich habe einen Dialekt erstellt, der den Zeilenvorschubcode zu einem `` <br /> `-Tag macht, also habe ich ihn unter Bezugnahme auf Folgendes neu erstellt.

Referenz) Sag Hallo! Verlängerung von Thymeleaf in 5 Minuten Referenz) Sag noch einmal Hallo! Verlängere Thymeleaf in weiteren 5 Minuten noch mehr

TemplateMode Im Fall von Thymeleaf2 ist der Parser XML-basiert und die Prüfung ist sehr streng. Nach dem Festlegen von TemplateMode.LEGACYHTML5 wurde nekoHTML als HTML-Parser verwendet. Es wird jedoch empfohlen, TemplateMode.HTML in Thymeleaf3 zu verwenden. Ich habe es geändert, weil es getan worden zu sein scheint. (TemplateMode.LEGACYHTML5 ist veraltet.) Tschüss: Katze:

The second difference is that the template mode has a value of TemplateMode.HTML. Template modes are not strings anymore and the possible values are a bit different from Thymeleaf 2. We will discuss it in a minute.

Referenz) Thymeleaf 3 zehnminütiger Migrationsleitfaden

Entfernen Sie die Inline-Syntax th:

Es verursacht keinen Fehler, aber die Migrationsanleitung lautet wie folgt. Ich habe diesmal nicht th: inline verwendet, daher war es nicht das Ziel der Korrektur, aber achten Sie darauf, es nicht versehentlich zu verwenden.

The only change we recommend doing to your templates is removing any th:inline="text" attributes you might have, because they are not needed anymore in order to have output inlined expressions in HTML or XML templates. And it’s just a recommendation — templates will work anyway. But you will benefit from some extra processing performance if you remove those.

Ein Fix wird empfohlen.

Thymeleaf2

<tr th:inline="text" th:each="user : ${users}">
    <td>[[$(user.id)]]</td>
    <td>[[$(user.name)]]</td>
</tr>

Referenz) [Thymeleaf2-12. Inline-Verarbeitung](https://www.thymeleaf.org/doc/tutorials/2.1/usingthymeleaf_ja.html#%E3%82%A4%E3%83%B3%E3%83%A9% E3% 82% A4% E3% 83% B3% E5% 87% A6% E7% 90% 86)

Thymeleaf3

<tr th:each="user : ${users}">
    <td>[[$(user.id)]]</td>
    <td>[[$(user.name)]]</td>
</tr>

Referenz) Thymeleaf3 - 12 Inlining

8. Verbindungspool (zusätzlicher Hinweis)

Der Standardverbindungspool wurde von Tomcat JDBC Connection Pool in HikariCP geändert. Es ist durchgesickert, weil es nicht der Zeitpunkt war, an dem die vom Implementierungsunterschied betroffene Quelle migriert wurde, aber ich werde es hinzufügen.

Der Migrationsleitfaden besagt, dass diejenigen, die Abhängigkeiten hinzugefügt haben, um HikariCP zu verwenden, diese nicht mehr schreiben müssen.

Referenz) [Spring-Boot-2.0-Migrationshandbuch - Arbeiten mit SQL-Datenbanken] (https://github.com/spring-projects/spring-boot/wiki/Spring-Boot-2.0-Migration-Guide#working-with-sql-databases)

Es wurde auch in der Spring Boot-Dokumentation wie dieser geschrieben.

Production database connections can also be auto-configured by using a pooling DataSource. Spring Boot uses the following algorithm for choosing a specific implementation: 1.We prefer HikariCP for its performance and concurrency. If HikariCP is available, we always choose it. 2.Otherwise, if the Tomcat pooling DataSource is available, we use it. 3.If neither HikariCP nor the Tomcat pooling datasource are available and if Commons DBCP2 is available, we use it.

Referenz) Spring-Boot-Dokumente - Boot-Features-Connect-to-Production-Datenbank

spring.datasource.tomcat.max-wait=10000
spring.datasource.tomcat.max-active=50
spring.datasource.tomcat.test-on-borrow=true

Ich frage mich, ob es einen Effekt gibt, wenn ich eine Eigenschaft mit einem solchen Präfix definiere. Die Hikari-CP-Einstellung lautet `spring.datasource.hikari. *`.

Ende

Recommended Posts

Memorandum beim Spring Boot 1.5.10 → Spring Boot 2.0.0
WebMvcConfigurer-Memorandum von Spring Boot 2.0 (Spring 5)
Spring Boot Denken Sie daran
Wenn @Transactional of Spring Boot nicht funktioniert
Memorandum über LOD.
Ein Memorandum über die Sucht nach Spring Boot2 x Doma2
[Java] Beim Schreiben der Quelle ... Memorandum ①
Ein Memorandum beim Erstellen eines REST-Service mit Spring Boot
Nachricht erlöschen (Spring Boot)
Unbekannter Fehler in Zeile 1 von pom.xml bei Verwendung von Spring Boot in Eclipse
Memorandum zum Herunterladen lokaler Dateien mit Spring Boot
Die Geschichte des Übergangs von Spring Boot 1.5 zu 2.1
Memorandum zur Spring-Integration ~ Grundlegendes zur Spring-Integration Beispiel 3. Enricher ~
Änderungen bei der Migration von Spring Boot 1.5 auf Spring Boot 2.0
Änderungen bei der Migration von Spring Boot 2.0 zu Spring Boot 2.2
Javaw.exe Fehler beim Starten von Spring Boot (STS)
Fordern Sie Spring Boot heraus
Spring Boot Form
gae + frühlingsstiefel
Memorandum (Spring Web)
Memorandum zur Spring-Integrationsstudie ~ Beispiel für Spring-Integration verstehen 1. Hallo Welt ~
Zusammenfassung dessen, was ich über Spring Boot gelernt habe
Memorandum zur Spring-Integration ~ Grundlegendes zur Spring-Integration Beispiel 2. JMS-Gateway ~
[FCM] Implementierung der Nachrichtenübertragung mit FCM + Spring Boot
Die Geschichte der Erhöhung der Spring Boot 1.5-Serie auf die 2.1-Serie
Lassen Sie uns das Gefühl von Spring Boot + Swagger 2.0 überprüfen
Verschiedene Korrespondenztabellen zwischen Spring Framework und Spring Boot
Hinweise zu Anmerkungen beim Schreiben von Tests für Spring Boot
[Überprüfung] Vergleich der Spring Boot- mit der Micronaut-Boot-Geschwindigkeit
Ressourcenhandler-Einstellungen bei der Bereitstellung von SPA mit der statischen Ressourcenfunktion von Spring Boot
Geben Sie die statische Ressourcencodierung in Spring Boot an
SPRING BOOT Lernaufzeichnung 01
[Hinweis] Festlegen der Datei bei Verwendung von Logback mit Spring Boot
Frühlingsstiefel + Heroku Postgres
Ein Memorandum beim Versuch von Spring Data JPA mit STS
Untersuchte asynchrone Ausführung von Abfragen in Spring Boot 1.5.9
Schreiben von Frühlingsstiefel-Memos (1)
Greifen Sie mit jdbcTemplate auf das integrierte h2db des Spring Boot zu
05. Ich habe versucht, die Quelle von Spring Boot zu löschen
Über DI des Frühlings ①
Erster Frühlingsstiefel (DI)
SPRING BOOT Lernprotokoll 02
Ich habe versucht, die Kapazität von Spring Boot zu reduzieren
Spring Boot2 Spickzettel
Spring Boot-Ausnahmebehandlung
Spring Boot Servlet-Zuordnung
Spring Boot Entwicklung-Entwicklungsumgebung-
Spring Boot-Lernverfahren
Über DI des Frühlings ②
Spring Boot lernen [Anfang]
Verwendung von CommandLineRunner im Spring Batch von Spring Boot
Schreiben von Spring Boot-Memos (2)
Erstellen Sie Restapi mit Spring Boot (bis zum Ausführen der App)
Spring Boot 2.2 Dokumentzusammenfassung
[Spring Boot] DataSourceProperties $ DataSourceBeanCreationException
Booten nach Umgebung mit Spring Boot of Maven
Spring Boot 2.3 Verfügbarkeit von Anwendungen
Spring Boot Tutorials Themen