[JAVA] Rüsten Sie den Federstiefel von der 1.5-Serie auf die 2.0-Serie auf

Einführung

Da die 2er-Serie von Spring Boot veröffentlicht wurde, ist es ein Memo beim Upgrade, da es eine große Sache ist

Der Migrationsleitfaden ist offiziell verfügbar. Befolgen Sie daher dieses Verfahren. Spring Boot 2.0-Migrationshandbuch Auch dieser Artikel war sehr hilfreich. Memorandum bei Spring Boot 1.5.10 → Spring Boot 2.0.0

Korrespondenzinhalt

Einführung des Eigenschaftsprüfungswerkzeugs

build.gradle wie unter [Bevor Sie beginnen] beschrieben (https://github.com/spring-projects/spring-boot/wiki/Spring-Boot-2.0-Migration-Guide#before-you-start) Fügen Sie Folgendes zu hinzu.

build.gradle


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

Dies warnt Sie vor Änderungen in den Spezifikationen von application.yml.

Gradle Plug-bezogene Korrekturen

Fügen Sie ein Plugin hinzu, um Abhängigkeiten aufzulösen

Ein Plugin, das Abhängigkeiten auflöst, wie in [Abhängigkeitsmanagement] beschrieben (https://github.com/spring-projects/spring-boot/wiki/Spring-Boot-2.0-Migration-Guide#dependency-management). Hinzufügen.

build.gradle


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

Die Datei application.yml mit geänderter Syntax wurde korrigiert

spring.batch.initializer.enabled wurde in spring.batch.initialize-schema geändert, also ändern Sie es hier. Da es nicht initialisiert wird, setzen Sie "nie". Initialize a Spring Batch Database

application.yml


spring:
  batch:
    initializer:
       enabled: false

application.yml


spring:
  batch:
    initialize-schema: never

Abschaffung des Kamelkastens auf application.yml

Der im Kamelfall auf application.yml festgelegte Fehler war ein Fehler. Auch wenn es ein Kebab-Fall ist. Also werde ich es zu einem Kebab-Fall machen.

application.yml


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

application.yml


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

Änderung der Build.gradle-Syntax

Einstellungsänderung beim Generieren von jar

Früher wurden JAR-Dateien mit bootRepackage für die Paketerzeugung generiert, aber dies scheint abgeschafft zu sein. Ersetzt durch bootJar und bootWar. Aufgrund der Einstellung der Angelegenheit wird "bootJar" jedoch auf "enabled = false" gesetzt.

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
      }
    }

Upgrade von gradlew

Ursprünglich habe ich gradlew 4.6 verwendet, aber ich werde es auf die neuesten 4.7 geben.

build.gradle


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

Änderungen rund um den Verbindungspool

Hikari CP kompatibel

Ich habe früher den Verbindungspool von Tomcat verwendet. HikariCP ist zum Standard geworden, also ändern Sie es dort.

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;
    }
}

Sie sollten auch das Zeitlimit für Abfragen usw. festlegen, aber diesmal habe ich es nicht festgelegt, da es SQL aus dem Stapel gibt, das noch lange ausgeführt wird.

Veraltete Klassen und Methoden korrigieren

Spring Mvc JavaConfig Update

WebMvcConfigurerAdapter ist aufgrund von spring5 veraltet. Da es heißt, dass Sie "WebMvcConfigurer" verwenden können, ändern Sie es dort. Ich denke, das liegt daran, dass ich angefangen habe, die Standardmethode zu verwenden.

WebMvcConfig.java


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

WebMvcConfig.java


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

Abschaffung von Md5PasswordEncoder

Ursprünglich veraltet, wurde es veraltet und muss geändert werden.

PasswordEncoderConfig.java


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

PasswordEncoderConfig.java


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

Ich würde gerne aufhören, MD5 selbst zu verwenden, aber es wird nicht empfohlen, da es für langfristige Projekte ziemlich schwierig ist, aber ich werde es einmal vermeiden.

Verwenden von DelegatingPasswordEncoder

Ich werde es verwenden, weil es von Spring Security 5 hinzugefügt wurde. Es scheint, dass es die Verarbeitung für jeden Passwort-Hashing-Algorithmus an den entsprechenden PasswordEncoder delegiert. Es gab eine Klasse, die standardmäßig festgelegt wurde. Verwenden Sie daher "PasswordEncoderFactories", um sie zu generieren. Standardmäßig wird bcrypt zurückgegeben.

PasswordEncoderConfig.java


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

Änderungen an org.hibernate.validator.constraints.NotBlank

org.hibernate.validator.constraints.NotBlank ist veraltet und wird geändert. Da javax.validation.constraints.NotBlank mit demselben Klassennamen implementiert ist, war es in Ordnung, nur den Importteil auf einmal zu ersetzen.

Mit dieser Art von Antwort funktioniert es gut. Ende

Recommended Posts

Rüsten Sie den Federstiefel von der 1.5-Serie auf die 2.0-Serie auf
Versuchen Sie Spring Boot von 0 bis 100.
Die Geschichte der Erhöhung von Spring Boot von 1.5 auf 2.1 Serie Teil2
Die Geschichte des Übergangs von Spring Boot 1.5 zu 2.1
Ä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
Was ich bei der Migration von der Spring Boot 1.4-Serie zur 2.0-Serie getan habe
Was ich bei der Migration von der Spring Boot 1.5-Serie zur 2.0-Serie getan habe
Die Geschichte der Erhöhung der Spring Boot 1.5-Serie auf die 2.1-Serie
Einführung in Spring Boot ~ ~ DI ~
Einführung in Spring Boot ② ~ AOP ~
Einführung in Spring Boot Teil 1
Ubuntu Desktop Upgrade von 18.0.4 (?) Auf 20.04.1 (Fokus)
So stellen Sie Spring Boot + PostgreSQL ein
Verwendung von ModelMapper (Spring Boot)
Spring Boot ab Null Teil 2
Spring Boot ab Null Teil 1
02. Ich habe eine API erstellt, um eine Verbindung von Spring Boot zu MySQL (My Batis) herzustellen.
Ändern Sie die Spring Boot REST API-Anforderung / Antwort von CamelCase in SankeCase
Übergang von Struts2 zu Spring MVC (Controller)
So teilen Sie eine Spring Boot-Nachrichtendatei
Fügen Sie Frühlingsstiefel und Gradle zur Sonnenfinsternis hinzu
Fordern Sie Spring Boot heraus
Spring Boot Form
Spring Boot Denken Sie daran
gae + frühlingsstiefel
Verwenden Sie den Thymeleaf-Textvorlagenmodus von Spring Boot
Verwendung des eingebauten h2db mit Federstiefel
So verkleinern Sie das Spring Boot Docker-Image
Verwendung von Spring Boot-Sitzungsattributen (@SessionAttributes)
Versuchen Sie, die Anmeldefunktion mit Spring Boot zu implementieren
So fügen Sie in Spring Boot einen Klassenpfad hinzu
Berühren Sie alle "Anleitungen" des Frühlings (von Zeit zu Zeit aktualisiert)
So binden Sie mit einer Eigenschaftendatei in Spring Boot
Versuchen Sie, die Migration mit Spring Boot Flyway zu automatisieren
[Java] Artikel zum Hinzufügen einer Validierung mit Spring Boot 2.3.1.
Ich wollte Spring Boot in einem Multiprojekt gradle
Wenden Sie Twitter Bootstrap 4 mithilfe von Webjars auf Spring Boot 2 an
◆ Rufen Sie die von Spring Boot erstellte API von React ab
[Spring Boot] So verweisen Sie auf die Eigenschaftendatei
[Einführung in Spring Boot] Authentifizierungsfunktion mit Spring Security
Spring Boot - So stellen Sie das Sitzungszeitlimit ein
03. Ich habe eine Anfrage von Spring Boot an die Postleitzahlensuch-API gesendet
[Spring Boot] So rufen Sie Eigenschaften dynamisch aus einer in einer URL enthaltenen Zeichenfolge ab
Vom Erstellen eines Spring Boot-Projekts bis zum Ausführen einer Anwendung mit VS Code
Pläne zur Unterstützung von JDK 11 für Eclipse und Spring Boot
SPRING BOOT Lernaufzeichnung 01
So stellen Sie Spring Boot Dependency Injection (DI) ein
Änderungen von Java 8 zu Java 11
Frühlingsstiefel + Heroku Postgres
Summe von Java_1 bis 100
1. Starten Sie Spring Framework von 1
Migrieren Sie von JUnit 4 zu JUnit 5
So schreiben Sie einen Komponententest für Spring Boot 2
Ordnen Sie DTO automatisch Entitäten mit der Spring Boot-API zu
Wenn Sie die Spring Boot + Thymeleaf-Verarbeitung trennen möchten
Schreiben von Frühlingsstiefel-Memos (1)
05. Ich habe versucht, die Quelle von Spring Boot zu löschen
So stellen Sie auf einem virtuellen Server eine Verbindung von Spring zu MySQL her (ungelöst)
So erstellen Sie ein Spring Boot-Projekt in IntelliJ