🌟
Spring Boot のアップグレード手順
これはなに?
サンプルのリポジトリを使って、Spring Boot を2.2から2.5へアップグレードするための手順をまとめたものである。
方針
We also recommend to upgrade in phases and not in one jump to the latest GA: first upgrade to 2.0, then 2.1, etc.
マイグレーションガイドで勧めれている通り、段階的にアップグレードする。
手順
以下のリポジトリをサンプルとして用いる。
基本的には、各バージョンのリリースノートから関係がありそうな箇所を拾って対応していく流れとなる。
Spring Boot 2.3
リリースノート確認
-
Changes to minimum requirements
- Gradle 6.3 以上にする必要がある
-
Jackson
- Jackson 2.11 以上にする必要がある
-
Automatic creation of
developmentOnly
Gradle configuration- DevTools のあたりを見直す必要あり
-
Deprecations from Spring Boot 2.2
- 見直す必要あり
-
Graceful shutdown
- ついでに有効にする
-
Dependency Upgrades
- この辺りが関係しそう
- Flyway 6.4
- Jackson 2.11
- JUnit Jupiter 5.6
- Kotlin 1.3.72
- Mockito 3.3
- この辺りが関係しそう
-
Deprecations in Spring Boot 2.3
- 実際にアップグレードしてみてエラーが出た部分があれば対応していく
対応
Gradle アップグレード
cd kotlin-ddd-sample
./gradlew wrapper --gradle-version=6.3
./gradlew -v
置換
find ./buildSrc/src/main/kotlin -name 'Versions.kt' -exec sed -i '' 's/const val flyway: String =.*/const val flyway: String = "6.4.4"/g' {} \;
find ./buildSrc/src/main/kotlin -name 'Versions.kt' -exec sed -i '' 's/const val jackson: String =.*/const val jackson: String = "2.11.4"/g' {} \;
find ./buildSrc/src/main/kotlin -name 'Versions.kt' -exec sed -i '' 's/const val junit: String =.*/const val junit: String = "5.6.3"/g' {} \;
find ./buildSrc/src/main/kotlin -name 'Versions.kt' -exec sed -i '' 's/const val springBoot: String =.*/const val springBoot: String = "2.3.12.RELEASE"/g' {} \;
以下もついでに実施した。
find ./buildSrc/src/main/kotlin -name 'Versions.kt' -exec sed -i '' 's/const val kotlin: String =.*/const val kotlin: String = "1.3.72"/g' {} \;
find ./buildSrc/src/main/kotlin -name 'Versions.kt' -exec sed -i '' 's/const val mockitoKotlin: String =.*/const val mockitoKotlin: String = "3.2.0"/g' {} \;
find ./buildSrc/src/main/kotlin -name 'Dependencies.kt' -exec sed -i '' "s/com.nhaarman.mockitokotlin2:mockito-kotlin/org.mockito.kotlin:mockito-kotlin/g" {} \;
Gracefulシャットダウンの有効化
application.yml に server.shutdown を追加し graceful を設定する。
server:
shutdown: graceful
動作確認
PR
ある程度 (アプリが起動するかなど) 動作確認を行う。
Spring Boot 2.4
リリースノート確認
-
Dependency Upgrades
- この辺りが関係しそう
- Flyway 7
- JUnit 5.7
- Mockito 3.4
- この辺りが関係しそう
-
Deprecations in Spring Boot 2.4
- 実際にアップグレードしてみてエラーが出た部分があれば対応していく
対応
置換
cd kotlin-ddd-sample
find ./buildSrc/src/main/kotlin -name 'Versions.kt' -exec sed -i '' 's/const val flyway: String =.*/const val flyway: String = "7.0.4"/g' {} \;
find ./buildSrc/src/main/kotlin -name 'Versions.kt' -exec sed -i '' 's/const val junit: String =.*/const val junit: String = "5.7.2"/g' {} \;
find ./buildSrc/src/main/kotlin -name 'Versions.kt' -exec sed -i '' 's/const val mockitoKotlin: String =.*/const val mockitoKotlin: String = "4.0.0"/g' {} \;
find ./buildSrc/src/main/kotlin -name 'Versions.kt' -exec sed -i '' 's/const val springBoot: String =.*/const val springBoot: String = "2.4.13"/g' {} \;
find ./buildSrc/src/main/kotlin -name 'Versions.kt' -exec sed -i '' 's/const val kotlin: String =.*/const val kotlin: String = "1.4.32"/g' {} \;
build.gradle.kts 編集
find ./buildSrc/src/main/kotlin -name 'Versions.kt' -exec sed -i '' 's/const val ktlintCore: String =.*/const val ktlintCore: String = "0.41.0"/g' {} \;
find ./buildSrc/src/main/kotlin -name 'Versions.kt' -exec sed -i '' 's/const val ktlint: String =.*/const val ktlint: String = "10.0.0"/g' {} \;
- 2行目の
import org.jlleitschuh.gradle.ktlint.KtlintFormatTask
を削除 -
tasks
ブロックのval ktlintKotlinScriptFormat by existing(KtlintFormatTask::class)
とval ktlintFormat by existing(Task::class)
を削除 -
buildSrc/src/main/kotlin/Versions.kt
のktlint
を10.0.0
に変更
editorconfig 追加
echo '[*.{kt, kts}]
#---- Ktlint rules ----
# Comma-separated list of rules to disable (Since 0.34.0)
# Note that rules in any ruleset other than the standard ruleset will need to be prefixed
# by the ruleset identifier.
disabled_rules = import-ordering, indent' > .editorconfig
動作確認
PR
ある程度 (アプリが起動するかなど) 動作確認を行う。
Spring Boot 2.5
リリースノート確認
- Gradle Default jar and war Tasks
-
Minimum Requirements Changes
- Gradle 6.8以上にする必要がある
-
Deprecations from Spring Boot 2.3 and 2.4
- アップグレードしてみてエラーが出た部分があれば対応していく
-
Dependency Upgrades
- この辺りが関係しそう
- Kotlin 1.5
- Flyway 7.7
- Jackson 2.12
- Mockito 3.7
- JUnit Jupiter 5.7
- この辺りが関係しそう
対応
Gradle アップグレード
cd kotlin-ddd-sample
./gradlew wrapper --gradle-version=7.0.2
./gradlew -v
置換
find ./buildSrc/src/main/kotlin -name 'Versions.kt' -exec sed -i '' 's/const val kotlin: String =.*/const val kotlin: String = "1.5.32"/g' {} \;
find ./buildSrc/src/main/kotlin -name 'Versions.kt' -exec sed -i '' 's/const val flyway: String =.*/const val flyway: String = "7.7.3"/g' {} \;
find ./buildSrc/src/main/kotlin -name 'Versions.kt' -exec sed -i '' 's/const val jackson: String =.*/const val jackson: String = "2.12.7"/g' {} \;
find ./buildSrc/src/main/kotlin -name 'Versions.kt' -exec sed -i '' 's/const val springBoot: String =.*/const val springBoot: String = "2.5.14"/g' {} \;
find . -name 'build.gradle.kts' -exec sed -i '' 's/allprojects {/tasks.getByName<Jar>("jar") {\n enabled = false\n}\n\nallprojects {/g' {} \;
動作確認
PR
ある程度 (アプリが起動するかなど) 動作確認を行う。
Discussion