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)
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.
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.
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
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)
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)
use the standard NotEmpty constraint instead
Weil es so ist, habe ich es so korrigiert.
Referenz) Hibernate Validator --Deprecated API
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
}
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.
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
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
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