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
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
.
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
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
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
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
}
}
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"
}
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.
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
}
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.
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();
}
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