[JAVA] L'histoire de la montée de la série Spring Boot 1.5 à la série 2.1

introduction

Salut, c'est @chan_kaku Cette fois, la série Spring Boot 1.5 deviendra EOL en août de cette année, je voudrais donc essayer de m'en occuper et mentionner les points difficiles.

À propos de Spring Boot

Spring Boot est un framework qui facilite la création d'applications basées sur le framework Spring. Consultez la documentation officielle (https://spring.io/projects/spring-boot) pour plus d'informations.

Ce que j'ai fait (aperçu)

--SérieGradle3 → Série Gradle5 --Spring Boot 1.5 series → Spring Boot 2.1 series --Mise à niveau d'autres bibliothèques dépendantes

Série Gradle3 → Série Gradle5

Afin de l'élever à la série SpringBoot2, j'ai dû augmenter la version de Gradle à 4.4 ou plus, donc j'ai travaillé dessus à partir d'ici Puisque le projet cible a utilisé Gradle Wrapper cette fois, j'ai modifié gradle-wrapper.properties comme suit.

gradle-wrapper.properties


distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists
zipStoreBase=GRADLE_USER_HOME
zipStorePath=wrapper/dists
distributionUrl=https\://services.gradle.org/distributions/gradle-5.2.1-all.zip #J'ai changé la version ici

Série SpringBoot 1.5 → Série Spring Boot 2.1

Avec le support ci-dessus, le système Spring Boot 2 peut enfin être utilisé, je vais donc augmenter la version ici. Les bases sont décrites dans le wiki Github de Spring Boot à ici. S'il vous plaît

build.gradle


plugins {
	id 'org.springframework.boot' version '2.1.4.RELEASE'
	id 'java'
}

apply plugin: 'io.spring.dependency-management'

group = 'com.example'
version = '0.0.1-SNAPSHOT'
sourceCompatibility = '1.8'

repositories {
	mavenCentral()
}

dependencies {
	implementation 'org.springframework.boot:spring-boot-starter-web'
	testImplementation 'org.springframework.boot:spring-boot-starter-test'
}

point de changement

Ce n'était pas la série boot1.5, mais selon Document, il semble que j'ai dû ajouter ʻio.spring.dependency-management`.

Comment écrire des plugins

Dans la série Gradle3, Java et Spring Boot ont également été décrits comme suit.

build.gradle


apply plugin: 'java'
apply plugin: 'org.springframework.boot'

Cependant, à partir de la série Gradle 5, la méthode d'écriture a changé et il est maintenant recommandé d'écrire comme un bloc comme suit.

build.gradle


plugins {
    id 'org.springframework.boot' version '2.1.4.RELEASE'
    id 'java'
}
Comment écrire des dépendances

La façon dont les dépendances sont écrites a également changé de manière significative. Le style d'écriture jusqu'à la série Gradle 3 est comme ça.

build.gradle


compile('org.springframework.boot:spring-boot-starter')
compile('org.springframework.boot:spring-boot-starter-web')
//.....etc

Fondamentalement, les bibliothèques dépendantes ont été écrites par compile. Cependant, dans la série Gradle 5, le style d'écriture de ʻimplementation augmente et compile` est obsolète. La différence entre «compile» et «implémentation» est simplement l'étendue de la propagation des dépendances. Par conséquent, j'ai remplacé la partie écrite comme «compile» par «implémentation» comme indiqué ci-dessous.

build.gradle


implementaion('org.springframework.boot:spring-boot-starter')
implementaion('org.springframework.boot:spring-boot-starter-web')
//.....etc
Comment écrire autour du pot

Cela a également été un peu changé. Document officiel

J'écrivais comme ça

build.gradle


jar {
	baseName = "hoge"
	archiveName = "${baseName}.jar"
	version = "1.0.0-SNAPSHOT"
}

Parmi ceux-ci, baseName et ʻarchiveName` étaient obsolètes, je les ai donc modifiés comme suit selon Document.

build.gradle


jar {
    archiveBaseName = "hoge"
    archiveFileName = "${archiveBaseName}.jar"
    version = "1.0.0-SNAPSHOT"
}

baseName va à ʻarchiveBaseName Il semble que ʻarchiveName a été changé en ʻarchiveFileName` En plus de cela, «l'appendice», etc. ont également été modifiés, veuillez donc consulter le document! !!

Autres points difficiles, etc.

À propos de doma2

Doma2 a été utilisé pour l'accès à la base de données du projet mis à niveau cette fois. Dans les dépendances d'origine, j'ai écrit comme suit.

build.gradle


compile('org.seasar.doma.boot:doma-spring-boot-starter:1.1.0')

Comme vous pouvez le voir dans la manière ci-dessus d'écrire les dépendances, j'ai simplement remplacé compile par ʻimplementation` et il est resté coincé dans un endroit inattendu. J'ai eu une erreur disant que je ne peux pas DI car le haricot de Dao n'est pas enregistré dans la classe que je DIing. Je n'ai pas pu comprendre la cause pendant un moment, mais une fois que j'ai regardé le document de doma2, il y avait une différence par rapport à la build.gradle d'origine, donc J'ai apporté les modifications suivantes et cela a bien fonctionné pour l'enregistrement de Dao's Bean!

build.gradle


implementation('org.seasar.doma.boot:doma-spring-boot-starter:1.1.1')
implementation("org.seasar.doma:doma:2.24.0")
annotationProcessor("org.seasar.doma:doma:2.24.0")

Jusqu'à présent, cela ne fonctionnait qu'avec le top doma-spring-boot-starter, mais je devais ajouter'doma'itself avec metaion implémentation. Il semblait que je devais mettre dans doma en utilisant ʻannotation Processor Ce «processeur d'annotation» a été ajouté à partir de la série Gradle 5, et la raison pour laquelle il doit être ajouté est que la série Gradle 5 ne prend pas en charge la méthode d'obtention du processeur d'annotation à partir du chemin de classe au moment de la compilation. .. Par conséquent, si vous utilisez non seulement doma mais aussi une bibliothèque qui avait l'habitude d'obtenir le processeur d'annotation à partir du chemin de classe, vous devez ajouter ʻannotation Processor comme ceci.

À propos de Jackson

jackson est une bibliothèque Java pour le traitement des données au format JSON, qui a été utilisée dans ce projet. Comme dans l'exemple, quand j'ai simplement remplacé compile par ʻimplementaion`, j'ai eu une erreur concernant l'enregistrement de bean dans la bibliothèque jackson comme dans doma2. Cela pourrait être résolu en mettant à jour la version.

finalement

Cette fois, j'ai essayé de cibler un projet avec le moins de bibliothèques dépendantes possible pour mesurer la difficulté de cette migration. Cependant, il y avait plus de dépendances que ce à quoi je m'attendais et ce fut une impression difficile pour moi personnellement. Étant donné que la série 1.5 EOL est censée être en août de cette année, nous vous recommandons de déménager le plus tôt possible! J'espère que vous trouverez cet article utile.

Site référencé

https://github.com/spring-projects/spring-boot/wiki/Spring-Boot-2.0-Migration-Guide https://qiita.com/yukina-ge/items/1ca029ed69494bfd36d6 https://qiita.com/opengl-8080/items/6ad642e0b016465891de https://doma.readthedocs.io/en/2.19.2/build/

Recommended Posts

L'histoire de la montée de la série Spring Boot 1.5 à la série 2.1
L'histoire de la montée de Spring Boot de la série 1.5 à la série 2.1 part2
05. J'ai essayé de supprimer la source de Spring Boot
J'ai essayé de réduire la capacité de Spring Boot
Mise à niveau de la botte à ressort de la série 1.5 à la série 2.0
À propos de la fonction de Spring Boot en raison de différentes versions
L'histoire de la transition de Spring Boot 1.5 à 2.1
Ce que j'ai fait lors de la migration de la série Spring Boot 1.4 vers la série 2.0
Ce que j'ai fait lors de la migration de la série Spring Boot 1.5 vers la série 2.0
Je veux contrôler le message d'erreur par défaut de Spring Boot
[Spring Boot] J'ai étudié comment implémenter le post-traitement de la demande reçue.
Vérifions la sensation de Spring Boot + Swagger 2.0
L'histoire de l'ajout du dernier Node.js à DockerFile
[Spring Boot] Comment se référer au fichier de propriétés
Comment définir des variables d'environnement dans le fichier de propriétés de l'application Spring Boot
Spécifiez le codage des ressources statiques dans Spring Boot
Un mémorandum de dépendance à Spring Boot2 x Doma2
Accédez au h2db intégré de Spring Boot avec jdbcTemplate
Comment utiliser CommandLineRunner dans Spring Batch of Spring Boot
Déployer le projet Spring Boot sur Tomcat dans XAMPP
Comment démarrer par environnement avec Spring Boot de Maven
Essayez Spring Boot de 0 à 100.
Introduction à Spring Boot ① ~ DI ~
Introduction à Spring Boot ② ~ AOP ~
Introduction à Spring Boot, partie 1
[Spring Boot] L'histoire selon laquelle le bean de la classe avec l'annotation ConfigurationProperties n'a pas été trouvé
Déployez des applications Spring Boot sur Heroku sans utiliser la CLI Heroku
20190803_Java & k8s sur Azure L'histoire d'aller au festival
[Java] Déployer l'application Spring Boot sur Azure App Service
Découpez SQL en fichier de propriété avec jdbcTemplate of spring boot
Déployez l'application créée par Spring Boot sur Heroku (public) ②
Déployez l'application créée par Spring Boot sur Heroku (public) ①
L'histoire de la transmission de Java à Heroku à l'aide du pipeline BitBucket
[Apache Tomcat] L'histoire de l'utilisation d'Apache OpenWebBeans pour activer CDI
Mémorandum lorsque Spring Boot 1.5.10 → Spring Boot 2.0.0
Spring Boot pour la première fois
[Édition Java] Histoire de la sérialisation
Comment configurer Spring Boot + PostgreSQL
Sortie de message (Spring boot)
L'histoire de @ViewScoped dévore la mémoire
L'histoire que je voulais développer Zip
Comment utiliser ModelMapper (Spring boot)
Filtrer le résultat de BindingResult [Spring]
Je veux comprendre le flux des paramètres de demande de traitement Spring
Obtenez une instance proxy du composant lui-même dans Spring Boot
L'histoire de Collectors.groupingBy que je veux garder pour la postérité
L'histoire de toString () commençant par le passage d'un tableau à System.out.println
Voir le comportement des mises à jour d'entités avec Spring Boot + Spring Data JPA
Une histoire qui m'a fait regretter quand une "NotReadablePropertyException" s'est produite pendant le développement de l'application Spring Boot.
Je veux connaître la méthode du contrôleur où l'exception a été levée dans le ExceptionHandler de Spring Boot
Comment appliquer immédiatement les modifications de Thymeleaf au navigateur avec #Spring Boot + maven
[Introduction à Spring Boot] Vérification de la validation du formulaire
Comment lire le corps de la requête plusieurs fois avec Spring Boot + Spring Security
L'histoire de l'oubli de fermer un fichier en Java et de l'échec
L'histoire de la mise à jour du Docker Container de Sonar Qube
L'histoire du passage d'Amazon RDS pour MySQL à Amazon Aurora Serverless
Comment accéder directement à Socket avec la fonction TCP de Spring Integration
L'histoire de la sortie de l'application Android sur le Play Store pour la première fois.
Comment déterminer le nombre de parallèles