L'application WEB sur laquelle je travaille était Spring Boot 1.5.10, mais depuis la sortie de 2.0.0, mettons-la à jour. C'est un mémorandum de ce que j'ai fait à l'époque. Note) Seul ce qui est requis pour l'application WEB en construction est décrit.
(4/18 postscript) Puisqu'une vulnérabilité a été trouvée dans la version 5.0.4 du Spring Framework utilisé dans 2.0.0, elle a été mise à niveau vers 2.0.1, qui est la version 5.0.5 prise en charge. Pour plus de détails (https://www.jpcert.or.jp/at/2018/at180014.html)
Spring4 → Spring5
L'article suivant a été très utile pour les modifications apportées à Spring5. Référence) Résumé des changements majeurs dans Spring Framework 5.0
** Java 8 ou supérieur requis **
Java était à l'origine 8 donc il n'a eu aucun effet.
Thymeleaf2 → Thymeleaf3
C'était peut-être la partie la plus influente de l'application que je créais.
Pour le moment, j'ai défini la version Spring Boot de gradle sur 2.0.0 et l'ai construite sur Wild: smirk: sans rien modifier. J'ai eu une erreur à la hâte, alors je vais examiner la procédure correctement et la résoudre dans l'ordre.
Les bons garçons devraient lire attentivement le [Guide de migration] de Spring Boot 2.0 (https://github.com/spring-projects/spring-boot/wiki/Spring-Boot-2.0-Migration-Guide) et lire la pièce. Égayez et essayez.
4.x ou supérieur est requis. Pour une raison quelconque, c'était gradlew 2.x, donc naturellement ce sera de la mousse là-bas. (Le criminel c'est moi)
Mettez à jour la version de la tâche wrapper.
build.gradle
task wrapper(type: Wrapper) {
gradleVersion = '4.6' //Version 4.Définir sur x ou plus
}
Ajoutez une tâche wrapper à build.gradle et exécutez la commande gradle wrapper`
pour la rendre gradlew version 4.x ou supérieure.
Vous pouvez maintenant utiliser gradlew pour créer des applications SpringBoot 2.0.0.
Référence) Spring-Boot-2.0-Release-Notes # gradle-plugin
apply plugin: 'org.springframework.boot'
apply plugin: 'io.spring.dependency-management' // <-- add this to your build.gradle
Avec la mise à niveau de la version, il semble que le plug-in de gestion des dépendances ne soit plus appliqué automatiquement. Vous devez le lire explicitement, alors suivez les instructions pour ajouter une ligne.
Référence) [Spring-Boot-2.0-Migration-Guide # spring-boot-gradle-plugin](https://github.com/spring-projects/spring-boot/wiki/Spring-Boot-2.0-Migration-Guide # spring-boot-gradle-plugin)
Il semble y avoir un outil de vérification appelé spring-boot-properties-migrator.
Ajouté temporairement à la dépendance de build.gradle.
gradle compilez et démarrez Spring Boot Application. Ensuite, un message inconnu apparaît sur la console. Il vous indiquera les propriétés qui ont changé de nom et les choses qui ont disparu.
Référence) [Spring-Boot-2.0-Migration-Guide # before-you-start](https://github.com/spring-projects/spring-boot/wiki/Spring-Boot-2.0-Migration-Guide#before- tu commences)
use the standard NotEmpty constraint instead
Parce qu'il y en a, je l'ai corrigé comme ça.
Référence) Hibernate Validator - API dépréciée
WebMvcConfigurerAdapter est obsolète.
Référence) 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.
Il indique que l'interface WebMvcConfigurer a maintenant une méthode par défaut, vous n'avez donc plus besoin d'adaptateur.
** WebMvcConfig.java avant modification **
WebMvcConfig avant le changement.java
@Configuration
public class WebMvcConfig extends WebMvcConfigurerAdapter
{
//Abréviation
}
** WebMvcConfig.java modifié **
WebMvcConfig après modification.java
@Configuration
public class WebMvcConfig implements WebMvcConfigurer
{
//Abréviation
}
Référence) https://docs.spring.io/spring-security/site/docs/5.0.3.RELEASE/reference/htmlsingle/ Référence) https://spring.io/blog/2017/09/15/security-changes-in-spring-boot-2-0-m4 TODO: Résumez le contenu ... peut-être.
JavaConfig Je ne l'ai pas fait, donc cela ne m'a pas affecté, mais veuillez noter qu'il semble y avoir un changement pour ceux qui le font.
Il est décrit en détail dans la section 2. Modifications de configuration du guide de migration ci-dessous. Référence) Thymeleaf 3 guide de migration de dix minutes
Dialect
Cela a beaucoup changé et l'ancien était l'erreur Zammai: open_hands_tone1 :.
J'ai créé un dialecte qui transforme le code de saut de ligne en une balise ``
'', alors je l'ai recréé en faisant référence à ce qui suit.
Référence) Dites bonjour! Extension de Thymeleaf en 5 minutes Référence) Say Hello Again! Extension de Thymeleaf encore plus en 5 minutes supplémentaires
TemplateMode Dans le cas de Thymeleaf2, l'analyseur est basé sur XML et la vérification est très stricte, donc après avoir défini TemplateMode.LEGACYHTML5, nekoHTML a été utilisé comme analyseur HTML, mais il est recommandé d'utiliser TemplateMode.HTML dans Thymeleaf3. Je l'ai changé parce que cela semble avoir été fait. (TemplateMode.LEGACYHTML5 est obsolète.) Au revoir: chat:
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.
Référence) Thymeleaf 3 guide de migration de dix minutes
Cela ne provoque pas d'erreur, mais le guide de migration indiqué comme suit. Je n'ai pas utilisé th: inline cette fois, donc ce n'était pas la cible de la correction, mais attention à ne pas l'utiliser accidentellement.
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.
Un correctif est recommandé.
Thymeleaf2
<tr th:inline="text" th:each="user : ${users}">
<td>[[$(user.id)]]</td>
<td>[[$(user.name)]]</td>
</tr>
Référence) [Thymeleaf2- 12. Traitement en ligne](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>
Référence) Thymeleaf3 --12 Inlining
Le pool de connexions par défaut est passé de Tomcat JDBC Connection Pool à HikariCP. Il a été divulgué car ce n'était pas le moment où la source affectée par la différence d'implémentation a été migrée, mais je vais l'ajouter.
Le Guide de migration indique que ceux qui ont ajouté des dépendances pour utiliser HikariCP n'ont plus besoin de les écrire.
Référence) [Spring-Boot-2.0-Migration-Guide --working-with-sql-databases] (https://github.com/spring-projects/spring-boot/wiki/Spring-Boot-2.0-Migration-Guide#working-with-sql-databases)
Il a également été écrit dans la documentation de Spring Boot comme ceci.
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.
Référence) Spring-Boot Documents --boot-features-connect-to-production-database
spring.datasource.tomcat.max-wait=10000
spring.datasource.tomcat.max-active=50
spring.datasource.tomcat.test-on-borrow=true
Je me demande s'il y a un effet si je définis une propriété avec un préfixe comme celui-ci. Le paramètre Hikari CP est `` spring.datasource.hikari. * ''.
fin
Recommended Posts