[JAVA] Mise à niveau de la botte à ressort de la série 1.5 à la série 2.0

introduction

Depuis la sortie de la série 2 de spring boot, c'est un mémo lors de la mise à niveau car c'est un gros problème

Le guide de migration est officiellement disponible, suivez donc cette procédure. Guide de migration Spring Boot 2.0 En outre, cet article a été très utile. Mémorandum lorsque Spring Boot 1.5.10 → Spring Boot 2.0.0

Contenu de la correspondance

Introduction de l'outil de vérification des propriétés

build.gradle comme décrit dans [Avant de commencer](https://github.com/spring-projects/spring-boot/wiki/Spring-Boot-2.0-Migration-Guide#before-you-start) Ajoutez ce qui suit à .

build.gradle


runtime("org.springframework.boot:spring-boot-properties-migrator")

Cela vous avertira des changements dans les spécifications de ʻapplication.yml`.

correctifs liés au plug-in gradle

Ajouter un plugin pour résoudre les dépendances

Un plugin qui résout les dépendances comme décrit dans Dependency Management Ajouter.

build.gradle


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

Correction du fichier application.yml avec une syntaxe modifiée

spring.batch.initializer.enabled a été changé en spring.batch.initialize-schema, alors changez-le ici. Puisqu'il ne s'initialise pas, définissez «jamais». Initialize a Spring Batch Database

application.yml


spring:
  batch:
    initializer:
       enabled: false

application.yml


spring:
  batch:
    initialize-schema: never

Suppression du cas de chameau sur application.yml

Celui défini dans le cas du chameau sur application.yml était une erreur. Même si c'est une affaire de kebab. Je vais donc en faire une caisse de kebab.

application.yml


spring:
  datasource:
    hogeHoge:
      driverClassName: com.mysql.jdbc.Driver

application.yml


spring:
  datasource:
    hoge-hoge:
      driver-class-name: com.mysql.jdbc.Driver

Modification de la syntaxe de Build.gradle

Changement de réglage lorsque le pot est généré

Auparavant, les fichiers jar étaient générés avec bootRepackage pour la génération de paquets, mais cela semble être aboli. Remplacé par «bootJar» et «bootWar». Cependant, en raison du paramétrage du sujet, bootJar est défini sur ʻenabled = false`.

build.gradle


    mainClassName = 'jp.co.hoge.fuga.App'
    bootRepackage {
        executable = true
    }

    jar {
      manifest {
          attributes 'GitHub-Branch-Name' : branchname
          attributes 'GitHub-Commit-Hash' : commithash
      }
    }

build.gradle


    ext.mainClass = 'jp.co.hoge.fuga.App'
    bootJar {
        enabled = false
    }

    jar {
      enabled = true
      manifest {
          attributes 'GitHub-Branch-Name' : branchname
          attributes 'GitHub-Commit-Hash' : commithash
      }
    }

Mise à niveau de gradlew

À l'origine, j'utilisais gradlew était de 4,6, mais je vais le donner au dernier 4.7.

build.gradle


task wrapper(type: Wrapper) {
    gradleVersion = "4.7"
}

Changements autour du pool de connexions

Compatible Hikari CP

J'utilisais le pool de connexion de tomcat, HikariCP est devenu la valeur par défaut, alors changez-le ici.

DataSourceConfiguration.java


@Data
@Component
@ConfigurationProperties(prefix = "spring.datasource.hoge")
public class DataSourceConfiguration {
    private String driverClassName;
    private String url;
    private String username;
    private String password;
    private Boolean testOnBorrow;
    private String validationQuery;

    public DataSource dataSource() {
      DataSource ds = new org.apache.tomcat.jdbc.pool.DataSource();
      ds.setDriverClassName(driverClassName);
      ds.setUrl(url);
      ds.setUsername(username);
      ds.setPassword(password);
      ds.setTestOnBorrow(testOnBorrow);
      ds.setValidationQuery(validationQuery);
      
      return ds;
    }
}

DataSourceConfiguration.java


@Data
@Component
@ConfigurationProperties(prefix = "spring.datasource.hoge")
public class DataSourceConfiguration {
    private String driverClassName;
    private String url;
    private String username;
    private String password;
    private Integer maxPoolSize;
    private String validationQuery;

    public HikariDataSource dataSource() {
      HikariDataSource ds = new HikariDataSource();
      ds.setDriverClassName(driverClassName);
      ds.setJdbcUrl(url);
      ds.setUsername(username);
      ds.setPassword(password);
      ds.setConnectionInitSql(validationQuery);
      ds.setMaximumPoolSize(maxPoolSize);
      
      return ds;
    }
}

Vous devez également définir le délai d'expiration de la requête, etc., mais je ne l'ai pas défini cette fois car il y a SQL de batch qui continue de fonctionner pendant une longue période.

Correction des classes et méthodes obsolètes

Mise à jour Spring Mvc JavaConfig

«WebMvcConfigurerAdapter» est obsolète en raison de spring5. Puisqu'il dit que vous pouvez utiliser WebMvcConfigurer, changez-le ici. Je pense que c'est parce que j'ai commencé à utiliser la méthode par défaut.

WebMvcConfig.java


@Configuration
public class WebMvcConfig extends WebMvcConfigurerAdapter {
       //Abréviation
}

WebMvcConfig.java


@Configuration
public class WebMvcConfig implements WebMvcConfigurer {
       //Abréviation
}

Suppression de Md5PasswordEncoder

À l'origine obsolète, elle est obsolète et doit être modifiée.

PasswordEncoderConfig.java


@Bean
public PasswordEncoder md5PasswordEncoder() {
    return new Md5PasswordEncoder();
}

PasswordEncoderConfig.java


@Bean
public PasswordEncoder md5PasswordEncoder() {
    return new MessageDigestPasswordEncoder("MD5");
}

Je voudrais arrêter d'utiliser MD5 lui-même, mais ce n'est pas recommandé car c'est assez difficile pour les projets de longue durée, mais je l'éviterai une fois.

Utilisation de DelegatingPasswordEncoder

Je vais l'utiliser car il a été ajouté à partir de Spring Security 5. Il semble qu'il délègue le traitement au PasswordEncoder approprié pour chaque algorithme de hachage de mot de passe. Il y avait une classe qui a été définie par défaut, alors utilisez PasswordEncoderFactories pour la générer. Par défaut, il renvoie bcrypt.

PasswordEncoderConfig.java


@Bean
public PasswordEncoder delegatingPasswordEncoder() {
    return PasswordEncoderFactories.createDelegatingPasswordEncoder();
}

Modifications apportées à org.hibernate.validator.constraints.NotBlank

ʻOrg.hibernate.validator.constraints.NotBlankest obsolète et sera modifié. Puisquejavax.validation.constraints.NotBlank` est implémenté avec le même nom de classe, il était correct de ne remplacer que la partie import à la fois.

Avec ce genre de réponse, cela fonctionne très bien. fin

Recommended Posts

Mise à niveau de la botte à ressort de la série 1.5 à la série 2.0
Essayez Spring Boot de 0 à 100.
L'histoire de la montée de Spring Boot de la série 1.5 à la série 2.1 part2
L'histoire de la transition de Spring Boot 1.5 à 2.1
Modifications lors de la migration de Spring Boot 1.5 vers Spring Boot 2.0
Modifications lors de la migration de Spring Boot 2.0 vers Spring Boot 2.2
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
L'histoire de la montée de la série Spring Boot 1.5 à la série 2.1
Introduction à Spring Boot ① ~ DI ~
Introduction à Spring Boot ② ~ AOP ~
Introduction à Spring Boot, partie 1
Mise à niveau d'Ubuntu Desktop de 18.0.4 (?) À 20.04.1 (focal)
Comment configurer Spring Boot + PostgreSQL
Comment utiliser ModelMapper (Spring boot)
Spring Boot à partir de zéro Partie 2
Spring Boot à partir de zéro Partie 1
02. J'ai créé une API pour me connecter de Spring Boot à MySQL (My Batis)
Changer la demande / réponse de l'API REST Spring Boot de CamelCase à SankeCase
Transition de Struts2 à Spring MVC (contrôleur)
Comment diviser un fichier de message Spring Boot
Ajoutez une botte de printemps et un dégradé à éclipse
Défi Spring Boot
Forme de botte de printemps
Spring Boot Rappelez-vous
gae + botte à ressort
Utilisez le mode de modèle de texte Thymeleaf de Spring Boot
Comment utiliser h2db intégré avec Spring Boot
Comment réduire l'image de Spring Boot Docker
Comment utiliser les attributs de session Spring Boot (@SessionAttributes)
Essayez d'implémenter la fonction de connexion avec Spring Boot
Comment ajouter un chemin de classe dans Spring Boot
Appuyez sur tous les "Guides" de Spring (mis à jour de temps en temps)
Comment se lier avec un fichier de propriétés dans Spring Boot
Essayez d'automatiser la migration avec Spring Boot Flyway
[Java] Article pour ajouter une validation avec Spring Boot 2.3.1.
Je voulais classer la botte à ressort dans un multi-projet
Appliquer Twitter Bootstrap 4 à Spring Boot 2 à l'aide de Webjars
◆ Obtenez l'API créée par Spring Boot à partir de React
[Spring Boot] Comment se référer au fichier de propriétés
[Introduction à Spring Boot] Fonction d'authentification avec Spring Security
Spring Boot - Comment définir le délai d'expiration de la session
03. J'ai envoyé une demande de Spring Boot à l'API de recherche de code postal
[Spring Boot] Comment obtenir des propriétés dynamiquement à partir d'une chaîne contenue dans une URL
De la création d'un projet Spring Boot à l'exécution d'une application avec VS Code
Plans pour prendre en charge JDK 11 pour Eclipse et Spring Boot
Fiche d'apprentissage SPRING BOOT 01
Comment définir l'injection de dépendance Spring Boot (DI)
Changements de Java 8 à Java 11
Botte de printemps + Heroku Postgres
Somme de Java_1 à 100
1. Démarrez Spring Framework à partir de 1
Migrer de JUnit 4 vers JUnit 5
Comment écrire un test unitaire pour Spring Boot 2
Mappez automatiquement DTO aux entités avec l'API Spring Boot
Si vous souhaitez séparer le traitement Spring Boot + Thymeleaf
Rédaction de mémo de démarrage de printemps (1)
05. J'ai essayé de supprimer la source de Spring Boot
Pour se connecter de Spring à MySQL sur un serveur virtuel (non résolu)
Comment créer un projet Spring Boot dans IntelliJ