【Spring Boot 2.4 Release Notes】日本語訳
- はじめに
- Spring Boot 2.4リリースノート
- Spring Boot 2.3からの変更点
- バージョンスキーマ変更
- spring-boot-starter-testからJUnit 5のVintage Engineを削除
- 構成ファイルの処理(アプリケーションのプロパティとYAMLファイル)
- 構成データのインポート
- 組み込みデータベースの検出
- ログバック構成のプロパティ
- デフォルトサーブレット登録
- HTTPトレースにデフォルトでCookieヘッダが含まれない
- 転送のUndertowパス
- Neo4j
- Elasticsearch RestClient
- R2DBC
- Flyway
- Flatten Mavenプラグインのプラグイン管理の削除
- exec-maven-pluginのバージョン管理
- Spring Boot Gradleプラグイン
- 統合テストでのメトリクスのエクスポート
- Spring Boot 2.2および2.3からの非推奨
- 新規注目点
- Spring Framework 5.3
- Spring Data 2020.0
- Neo4j
- R2DBC
- Java 15サポート
- カスタムプロパティ名のサポート
- 階層化jarがデフォルトで有効
- 追加アプリケーション構成のインポート
- ボリュームマウントされた構成ディレクトリツリー
- ファイル拡張子のない設定ファイルのインポート
- オリジンチェーン
- スタートアップエンドポイント
- Docker/Buildpackのサポート
- Mavenビルドパックのサポート
- Gradleビルドパックのサポート
- Redisキャッシュメトリクス
- Web構成のプロパティ
- サーブレットとフィルタを登録可能な@WebListeners登録
- Cassandraスライステスト
- Flyway 7
- H2コンソールのWeb管理者パスワードの構成プロパティ
- ApacheCassandraのCqlSessionベースのヘルスインジケータ
- Prometheusによるフィルタースクレイピング
- Spring Security SAML構成プロパティ
- Failure Analyzers
- Jar最適化
- その他
- 依存関係のアップグレード
- Spring Boot2.4での非推奨
- Spring Boot 2.3からの変更点
はじめに
仕事でSpring Boot 2.4 を利用することになりましたので、Release Notesを訳してみました。
<!!注意!!>
筆者は特に英語力に自信があるわけではありません。ご利用の際は自己責任でお願いいたします。
(参考:当ブログの免責事項)
誤訳があればご指摘いただけると幸いです。本文は下記のリンクを参照しています。
以下、リリースノートの日本語訳です。
Spring Boot 2.4リリースノート
Spring Boot 2.3からの変更点
バージョンスキーマ変更
2.4として、Spring Bootは新Springバージョンスキーマに対応しています。(build.gradle/pom.xml
のSpring Bootバージョンを2.3.5.RELEASE
から2.4.0
に更新する必要があります。)
spring-boot-starter-test
からJUnit 5のVintage Engineを削除
Spring Boot 2.4にアップグレードしてorg.junit.Test
のようなJUnitクラスのテストコンパイルエラーが表示される場合、JUnit 5のvintage engineはspring-boot-starter-test
から削除されたことが原因である可能性があります。
Vintage Engineを使用すれば、JUnit4で記述されたテストをJUnit5で実行できます。テストをJUnit5に移行せず、引き続きJUnit 4を使用する場合は、次の例に示すようにVintageEngineへの依存関係を追加します。
Mavenの例:
<dependency> <groupId>org.junit.vintage</groupId> <artifactId>junit-vintage-engine</artifactId> <scope>test</scope> <exclusions> <exclusion> <groupId>org.hamcrest</groupId> <artifactId>hamcrest-core</artifactId> </exclusion> </exclusions> </dependency>
Gradleの例:
testImplementation("org.junit.vintage:junit-vintage-engine") { exclude group: "org.hamcrest", module: "hamcrest-core" }
構成ファイルの処理(アプリケーションのプロパティとYAMLファイル)
Spring Boot 2.4は、application.properties
ファイルとapplication.yml
ファイルの処理方法を変更しました。
単純なapplication.properties
またはapplication.yml
ファイルしかない場合、アップグレードはシームレスである必要があります。
ただし、より複雑な設定(プロファイル固有のプロパティまたはプロファイルアクティベーションプロパティの使用)がある場合、新しい機能を使用するにはいくつかの変更が必要になることがあります。
Spring Boot 2.3互換のロジックが必要な場合は、application.properties
またはapplication.yml
ファイルでspring.config.use-legacy-processing
プロパティをtrue
に設定できます。
構成データのインポート
spring.config.location
およびspring.config.import
(このリリースで導入)で指定された構成の場所は、ファイルまたはフォルダーが存在しない場合に暗黙で失敗しません。
場所をインポートしたいが、場所が見つからなくてもスキップしてかまわない場合は、optional:
プレフィックスを付ける必要があります。
例えば、spring.config.location=optional:/etc/config/application.properties
は、application.properties
ファイルが存在する場合は/etc/config/
からインポートし、存在しない場合はスキップします。
すべての場所をオプションとして扱いたい場合は、SpringApplication.setDefaultProperties(…)
またはシステム環境変数でspring.config.on-not-found=ignore
を設定できます。
組み込みデータベースの検出
組み込みデータベースロジックは、データベースがメモリ内にある場合にのみ組み込みと見なされるように改良されました。 H2、HSQL、Derbyでファイルベースの永続性またはサーバーモードを使用している場合、この変更は2つの結果をもたらします:
sa
ユーザ名は設定されなくなります。その動作に依存している場合は、構成でspring.datasource.username=sa
を設定する必要があります。- このようなデータベースは組み込みとは見なされなくなるため、起動時に初期化されなくなります。
spring.datasource.initialization-mode
を使用すると、これを通常として設定できます。
ログバック構成のプロパティ
ログバックに固有のログプロパティは、ログバック固有であるという事実を反映して名前が変更されました。以前の名前は非推奨になりました。
以下のSpring Bootプロパティが変更されました:
logging.pattern.rolling-file-name
→logging.logback.rollingpolicy.file-name-pattern
logging.file.clean-history-on-start
→logging.logback.rollingpolicy.clean-history-on-start
logging.file.max-size
→logging.logback.rollingpolicy.max-file-size
logging.file.total-size-cap
→logging.logback.rollingpolicy.total-size-cap
logging.file.max-history
→logging.logback.rollingpolicy.max-history
それらがマップするシステム環境プロパティも同様です:
ROLLING_FILE_NAME_PATTERN
→LOGBACK_ROLLINGPOLICY_FILE_NAME_PATTERN
LOG_FILE_CLEAN_HISTORY_ON_START
→LOGBACK_ROLLINGPOLICY_CLEAN_HISTORY_ON_START
LOG_FILE_MAX_SIZE
→LOGBACK_ROLLINGPOLICY_MAX_FILE_SIZE
LOG_FILE_TOTAL_SIZE_CAP
→LOGBACK_ROLLINGPOLICY_TOTAL_SIZE_CAP
LOG_FILE_MAX_HISTORY
→LOGBACK_ROLLINGPOLICY_MAX_HISTORY
デフォルトサーブレット登録
Spring Boot 2.4は、サーブレットコンテナによって提供されるDefaultServlet
を登録しなくなります。
ほとんどのアプリケーションでは、Spring MVCのDispatcherServlet
が必要な唯一のサーブレットであるため使用されません。
デフォルトのサーブレットがまだ必要な場合は、server.servlet.register-default-servlet
をtrue
に設定できます。
HTTPトレースにデフォルトでCookieヘッダが含まれない
CookieリクエストヘッダとSet-Cookieレスポンスヘッダは、デフォルトでHTTPトレースに含まれなくなりました。
Spring Boot 2.3の動作を復元するには、cookies, errors, request-headers, response-headers
にmanagement.trace.http.include
を設定します。
転送のUndertowパス
デフォルトでは、Undertowはリクエストが転送されるときに元のリクエストURLを保持します。
このリリースは、サーブレット仕様に準拠するためにUndertowのデフォルトをオーバーライドします。
以前のUndertowのデフォルトの動作は、プロパティserver.undertow.preserve-path-on-forward
をtrue
に設定することで復元できます。
Neo4j
このリリースでは、Neo4jサポートが大幅に見直されています。
spring.data.neo4j.*
の多くのプロパティが削除され、Neo4jOGMのサポートも同様に削除されました。
Neo4jドライバの構成はspring.neo4j.*
名前空間を通して行われますが、データ名前空間からのURIと基本認証は非推奨の方法で引き続きサポートされています。
この変更とSpringData Neo4j 6の機能の詳細については、ドキュメントを確認してください。
Elasticsearch RestClient
低レベルのElasticsearch RestClient
Beanは、Spring Bootによって自動構成されなくなります。RestHighLevelClient
Beanは引き続き自動構成されます。
ほとんどのユーザは低レベルのクライアントを使用する必要はなく、この変更の影響を受けないはずです。
R2DBC
R2DBCのコアインフラは、新しいspring-r2dbc
モジュールを備えたSpringフレームワークに移行しました。
このインフラを使用している場合は、非推奨のアクセスを新しいコアサポートに移行してください。
Flyway
Flyway 7へのアップグレードには、コールバックの順序に対するいくつかの変更が含まれています。
これは、@Order
およびOrdered
を介してサポートする登録注文に依存しているすべての人にとって重大な変更になります。
Flyway 5を使用している場合、Flywayは1つの機能リリースのスキーマアップグレードのみを保持するため、Spring Boot2.4にアップグレードする前に必ずFlyway6にアップグレードしてください。
Flatten Mavenプラグインのプラグイン管理の削除
Spring BootのビルドはFlatten Mavenプラグイン(flatten-maven-plugin
)を使用しなくなり、プラグイン管理は削除されました。
Spring Bootの管理バージョンに依存している場合は、独自のプラグイン管理を追加する必要があります。
exec-maven-plugin
のバージョン管理
exec-maven-plugin
のバージョン管理は削除されました。
このプラグインを使用している場合は、独自のpluginManagement
でバージョンを指定してください。
Spring Boot Gradleプラグイン
Spring Boot GradleプラグインのbootJar
タスクのDSLが更新され、Property<String>
を使用してmainClass
を構成できるようになりました。現在mainClassName
を使用している場合、例えば:
bootJar { mainClassName 'com.example.ExampleApplication' }
それを`mainClass'に変更する必要があります:
bootJar { mainClass 'com.example.ExampleApplication' }
統合テストでのメトリクスのエクスポート
@SpringBootTest
は利用可能な監視システムを構成しなくなり、メモリ内のMeterRegistry
のみを提供します。
統合テストの一部としてメトリックをエクスポートしていた場合は、テストに @AutoConfigureMetrics
を追加して、以前の動作を復元できます。
Spring Boot 2.2および2.3からの非推奨
Spring BootのRelease Compatibilityポリシーを反映して、Spring Boot 2.2で非推奨となったコードはSpring Boot 2.4で削除されました。 Spring Boot 2.3で非推奨になったコードはそのまま残り、Spring Boot 2.5で削除される予定です。
新規注目点
構成の変更の完全な概要については、構成の変更ログを確認してください。
Spring Framework 5.3
Spring Boot 2.4はSpring Framework 5.3を使用します。 Spring Framework wikiには、新しいリリースの詳細が記載された新機能のセクションがあります。
Spring Data 2020.0
Spring Boot 2.4には、Spring Dataリリーストレインのバージョン2020.0(コードネームOckham)が含まれています。リリースの詳細については、Spring Data wikiを参照してください。
Neo4j
このリリースでは、リアクティブリポジトリがサポートされ、Neo4jドライバの個別の自動構成に依存しています。その結果、SpringDataの有無にかかわらずNeo4jを使用できるようになりました。
Neo4jのヘルスチェックはドライバを使用し、Neo4jドライバが構成されている限り利用できます。
リアクティブアクセスで @Transactional
を使用する場合は、今のところ、Neo4jReactiveTransactionManager
Beanを自分で構成する必要があります。
@Bean(ReactiveNeo4jRepositoryConfigurationExtension.DEFAULT_TRANSACTION_MANAGER_BEAN_NAME) public ReactiveTransactionManager reactiveTransactionManager(Driver driver, ReactiveDatabaseSelectionProvider databaseNameProvider) { return new ReactiveNeo4jTransactionManager(driver, databaseNameProvider); }
R2DBC
R2dbcEntityTemplate
を使用して、エンティティを通してリアクティブR2DBCの使用を簡素化できます。
Java 15サポート
Spring Boot 2.4は、Java 15を完全にサポートするようになりました。サポートされる最小バージョンはJava 8のままです。
カスタムプロパティ名のサポート
コンストラクタバインディングを使用する場合、プロパティの名前はパラメータ名から派生します。 これは、Javaの予約済みキーワードを使用する場合に問題になる可能性があります。
このような状況では、次のような@Name
アノテーションを使用できるようになりました。
@ConfigurationProperties(prefix = "sample") @ConstructorBinding public class SampleConfigurationProperties { private final String importValue; public SampleConfigurationProperties(@Name("import") String importValue) { this.importValue = importValue; } }
上記のサンプルは、sample.import
プロパティを公開しています。
階層化jarがデフォルトで有効
このリリースでは、階層化jarが有効になり、デフォルトでlayertoolsが含まれています。 これによって、すぐに使用できるビルドパックを使用して生成されたイメージの効率が向上し、カスタムDockerfileを作成するときにその機能を利用できるようになります。
追加アプリケーション構成のインポート
spring.config.use-legacy-processing
をtrue
に設定していない限り、メインのapplication.properties
またはapplication.yml
から直接追加プロパティとyamlファイルをインポートできるようになりました。
spring.config.import
プロパティを使用して、Spring環境にインポートする必要がある1つ以上の追加の構成ファイルを指定できます。詳細については、リファレンスガイドのこのセクションを参照してください。
これらの変更を行った理由を説明するショートブログを公開しました。
ボリュームマウントされた構成ディレクトリツリー
spring.config.import
プロパティを使用して、Kubernetesで一般的に使用される構成ツリーをインポートすることもできます。
構成ツリーは、キー/値のペアを提供する別の方法です。
各ペアは独自のファイルで宣言され、ファイル名がプロパティキーを形成し、ファイルの内容が値を提供します。
完全な例については、更新されたリファレンスドキュメントを参照してください。
構成ツリーからロードされたプロパティには、デフォルトで末尾の改行文字がトリミングされています。
ファイル拡張子のない設定ファイルのインポート
一部のクラウドプラットフォームでは、ファイル拡張子なしでファイルをボリュームマウントすることしかできません。
このような制約がある場合は、コンテンツタイプに関するヒントをSpring Bootに提供することで、これらのファイルをインポートできるようになりました。
例えば、spring.config.import=/etc/myconfig[.yaml]
を/etc/myconfig
YAMLとしてロードします。
オリジンチェーン
Origin
インターフェースは、新しいgetParent()
メソッドで更新されました。
これによって、アイテムの出所を正確に示すことができる完全なオリジンチェーンを提供できます。
たとえば、application.properties
でspring.config.import
を使用して、2番目のファイルをインポートできます。
この2番目のファイルからロードされたプロパティのOrigin
には、元のインポート宣言を指す親があります。
actuator/env
またはactuator/configprops
アクチュエータエンドポイントの出力を確認することで、これを自分で試すことができます。
スタートアップエンドポイント
アプリケーションの起動に関する情報を表示する、新しい起動アクチュエータエンドポイントが利用可能になりました。 エンドポイントは、開始に予想よりも時間がかかっているBeanを特定するのに役立ちます。
この作業は、Spring Framwork 5.3に最近追加されたアプリケーションの起動追跡機能に基づいています。 この機能の詳細については、Spring Frameworkのリファレンスドキュメントを参照してください。
Docker/Buildpackのサポート
画像の公開
Mavenプラグインのspring-boot:build-image
ゴールとGradleプラグインのbootBuildImage
タスクに、生成されたイメージをDockerレジストリに公開する機能が追加されました。
イメージを公開するためのプラグインの構成の詳細については、MavenおよびGradleプラグインのドキュメントを参照してください。
認証
Spring Bootのビルドパックサポートを使用する場合、ビルダーまたは実行イメージにプライベート認証済みDockerレジストリを使用できるようになりました。 ユーザ名/パスワードとトークンベースの認証の両方がサポートされています。
MavenとGradle*1のドキュメントが更新され、新しい構成が表示されます。
Paketoビルドパックのデフォルト
Mavenプラグインのspring-boot:build-image
ゴールとGradleプラグインのbootBuildImage
タスクでデフォルトで使用されるイメージビルダーが最新のPaketoイメージにアップグレードされました。
アクセシビリティを向上させるために、PaketoイメージレジストリがGoogle Container RegistryからDocker Hubに変更されました。
Mavenビルドパックのサポート
Mavenのspring-boot:build-image
ゴールによって、すべてのプロジェクトモジュールの依存関係が「アプリケーション」レイヤーに配置されるようになりました。
これは、ビルドに複数のプロジェクトモジュールがある場合、それらはすべて同じレイヤーに配置されることを意味します。
XMLスキーマも更新され、新しい<includeModuleDependencies/>
要素と<excludeModuleDependencies/>
要素を使用してレイヤーをカスタマイズできるようになりました
詳細については、更新されたMavenのドキュメントを参照してください。
Gradleビルドパックのサポート
GradleのbootBuildImage
タスクは、すべてのプロジェクトモジュールの依存関係が「アプリケーション」レイヤーに配置されるようになりました。
これは、ビルドに複数のプロジェクトモジュールがある場合、それらはすべて同じレイヤーに配置されることを意味します。
レイヤーをカスタマイズするときに、DSLでincludeProjectDependencies()
とexcludeProjectDependencies()
を使用することもできます。
詳細については、更新されたGradleのドキュメントを参照してください。
Redisキャッシュメトリクス
Redisキャッシュを使用している場合は、Micrometerを介してキャッシュ統計を公開できるようになりました。 ログに記録されるメトリクスには、hits/missesだけでなく、puts/gets/deletesの数も含まれます。 保留中のリクエストの数とロック待機時間も記録されます。
この機能を有効にするには、spring.cache.redis.enable-statistics
をtrue
に設定します。
Web構成のプロパティ
SpringMVCまたはSpringWebFluxのいずれかを使用したWebロケールとリソースの場所の構成をサポートするためのプロパティが追加されました。 新しいプロパティは次の通りです:
spring.web.locale
spring.web.locale-resolver
spring.web.resources.*
サーブレットまたはリアクティブWebスタックのいずれかを使用したアクチュエータ管理エンドポイントの構成をサポートするために、新しいプロパティが追加されました:
management.server.base-path
これらのSpringMVCおよびサーブレット固有のプロパティは非推奨になり、いずれかのWebスタックをサポートする新しいプロパティが採用されました。
spring.mvc.locale
spring.mvc.locale-resolver
spring.resources.*
management.server.servlet.context-path
サーブレットとフィルタを登録可能な@WebListeners登録
サーブレット@WebListener
クラスは、それ自体がサーブレットとフィルタを登録できるように登録されるようになりました。
以前のバージョンのSpring Bootは、javax.servlet.Registration.Dynamic
への呼び出しを使用してそれらを登録しました。
これは、サーブレット仕様(4.4)の次のセクションが適用されることを意味します。
ServletContextListenerがweb.xmlまたはweb-fragment.xmlで宣言されておらず、@WebListenerアノテーションも付けられていないServletContextListenerのcontextInitializedメソッドにServletContextが渡された場合、サーブレット、フィルターとリスナーのプログラム構成のためにServletContextで定義されたすべてのメソッドに対してUnsupportedOperationExceptionをスローする必要があります。
Spring Boot 2.4以降、動的登録を使用しなくなったため、ServletContextListener.contextInitialized
メソッドからevent.getServletContext().addServlet(…)
およびevent.getServletContext.addFilter(…)
を安全に呼び出すことができます。
Cassandraスライステスト
追加のテストスライスを使用して、@DataCassandraTest
を使用してCassandraに依存するコンポーネントをテストできます。
通常通り、Cassandraリポジトリと必要なインフラストラクチャのみがデフォルトで構成されています。
Testcontainersと@DynamicPropertSource
を使用した例を次に示します。
@DataCassandraTest(properties = "spring.data.cassandra.local-datacenter=datacenter1") @Testcontainers(disabledWithoutDocker = true) class SampleDataCassandraTestIntegrationTests { @Container static final CassandraContainer<?> cassandra = new CassandraContainer<>().withStartupAttempts(5) .withStartupTimeout(Duration.ofMinutes(2)); @DynamicPropertySource static void cassandraProperties(DynamicPropertyRegistry registry) { registry.add("spring.data.cassandra.contact-points", () -> cassandra.getHost() + ":" + cassandra.getFirstMappedPort()); } ... }
Flyway 7
このリリースはFlyway7にアップグレードされ、いくつかのプロパティが追加されます。
オープンソース版では、次のspring.flyway
プロパティを追加しました:
url
user
password
「teams」エディションを使用している場合は、次のものも利用できます:
cherry-pick
jdbc-properties
oracle-kerberos-cache-file
oracle-kerberos-config-file
skip-executing-migrations
H2コンソールのWeb管理者パスワードの構成プロパティ
H2コンソールのWeb管理者パスワードを構成するための新しい構成プロパティspring.h2.console.settings.web-admin-password
が導入されました。
パスワードは、コンソールの設定とツールへのアクセスを制御します。
ApacheCassandraのCqlSessionベースのヘルスインジケータ
新しいCqlSessionベースのヘルスインジケータであるCassandraDriverHealthIndicator
とCassandraDriverReactiveHealthIndicator
が導入されました。
これらのインジケーターの1つは、CassandraのJavaドライバがクラスパス上にあるときに自動構成されます。
既存のSpring Data Cassandraベースのヘルスインジケータは非推奨になりました。
Prometheusによるフィルタースクレイピング
アクチュエータのPrometheusエンドポイント/actuator/prometheus
は、応答に含まれるサンプルをフィルタリングするために使用できるincludedNames
クエリパラメータをサポートするようになりました。
詳細については、Actuator APIのドキュメントを参照してください。
Spring Security SAML構成プロパティ
Properties have been added to allow configuration of a SAML2 relying party registration’s decryption credentials and Assertion Consumer Service (ACS). The properties are under the following headings:
spring.security.saml2.relyingparty.registration.decryption.*
spring.security.saml2.relyingparty.registration.acs.*
Failure Analyzers
ApplicationContext
が作成されていない場合でも、FailureAnalizersが考慮されるようになりました。
これによって、Environment
処理中にスローされた例外を分析することもできます。
BeanFactoryAware
またはEnvironmentAware
を実装するアナライザーは、ApplicationContext
が作成されない限り使用されないことに注意してください。
Jar最適化
実行可能なSpring Boot jarを生成するときに、空のスターター依存関係が自動的に削除されるようになりました。 ほとんどのスターターは推移的な依存関係しか提供しないため、最終的なjarにパッケージ化しても意味がありません。
Spring Bootアノテーションプロセッサも削除され、ビルド中にのみ役立ちます。
これらは、spring-boot-autoconfigure-processor
とspring-boot-configuration-processor
です。
コードを含まない独自のスターターPOMがある場合は、値が「dependencies-starter」のSpring-Boot-Jar-Type
エントリーをMANIFEST.MFに追加できます。
注釈プロセッサを除外する場合は、値「annotation-processor」を使用して同じプロパティを追加できます。
その他
上記の変更とは別に、次のような多くのマイナーな調整と改善も含みます:
- アプリケーションが実行中のJVMのバージョンを起動時に記録します。
- 末尾の空白は、
logging.config
の値から自動的に削除されます。 - R2DBCプールのサポートによって、追加の構成プロパティが公開されます。
LdapTemplate
の例外処理は、特定の例外を無視するように構成できます。- ISOオフセット日時形式は、MVCおよびWebfluxをサポートします。
AntPathMatcher
の代わりに新しいPathPatternParser
をオプトインする構成プロパティを追加して、リクエストマッピングパスパターンを解析および照合します。@DurationUnit
、@DataSizeUnit
、および@PeriodUnit
は、@ConstructorBinding
を使用してコンストラクタパラメータにアノテーションを付けることができます。- 自動構成された
RabbitConnectionFactory
は、CredentialsProvider
とCredentialsRefreshService
の存在を確認します。 - ヘルスグループは例外のみで定義できます。
AbstractRoutingDataSource
は、management.health.db.ignore-routing-data-sources
を使用したヘルスチェックでは無視できます。- SAML証明書利用者のlocalEntityIdTemplateを設定できます
- HTTPトレースは、ナノ秒の精度で測定されます。
- 専用の
FailureAnalyzer
は、Liquibaseの変更ログが欠落している場合に意味のあるメッセージを提供します。 - Nettyのリクエストデコーダは、
server.netty.*
プロパティを使用してカスタマイズできます。 - Spring Bootバージョンが管理するLiquibaseバージョンと一貫性のあるLiquibaseMavenプラグインのプラグイン管理。
- Prometheus PushGatewayの基本認証サポート。
spring.redis.client-type
を使用してJedisとLettuceの両方が使用可能な場合に、Jedisの選択を許可します。spring.redis.lettuce.cluster.refresh.dynamic-sources
を使用して、Redisクラスタの動的ソースの更新を無効にすることを許可します。- リファレンスドキュメントには、すべての構成例の
Properties
とYAML
の両方が含まれるようになりました。 - RSocketServerのフラグメントサイズは、
spring.rsocket.fragment-size
プロパティを使用してカスタマイズできるようになりました。 - LogbackおよびLog4jロギングで使用されていた文字セットは、プロパティ
logging.charset.console
およびlogging.charset.file
を使用して構成できるようになりました。 - Gradle 6.7以降を使用してSpring Bootアプリケーションを構築する場合、Gradleの構成キャッシュがサポートされます。
依存関係のアップグレード
Spring Boot 2.4は、いくつかのSpringプロジェクトの新しいバージョンに移行します:
- Spring AMQP 2.3 (what’s new)
- Spring Batch 4.3 (what’s new)
- Spring Data 2020.0 (変更ログ)
- Spring Framework 5.3 (what’s new | アップグレード)
- Spring Integration 5.4 (what’s new)
- Spring HATEOAS 1.2 (マイグレーションガイド)
- Spring Kafka 2.6 (what’s new)
- Spring Retry 1.3
- Spring Security 5.4 (what’s new)
- Spring Session 2020.0
多数のサードパーティの依存関係も更新されましたが、その中でも注目すべきものは次のとおりです。
- Artemis 2.13
- AssertJ 3.18
- Cassandra Driver 4.7
- Elasticsearch 7.9
- Flyway 7
- Jersey 2.31
- JUnit 5.7
- Liquibase 3.10
- Lettuce 6.0 (release notes)
- Micrometer 1.6 (release notes)
- Mockito 3.4
- MongoDB 4.1
- Oracle Database 19.7
- Reactor 2020.0 (release notes)
- RSocket 1.1
- Undertow 2.2
Spring Boot2.4での非推奨
ConfigFileApplicationListener
は非推奨になり、ConfigDataEnvironmentPostProcessor
が採用されました。contextClass
に関連するSpringApplicationBuilder
メソッドとSpringApplication
メソッドは非推奨になり、contextFactory
を使用する代替メソッドが優先されます。CloudFoundryVcapEnvironmentPostProcessor
の一部のメソッドは、EnvironmentPostProcessor
の更新が機能するように非推奨になりました(これらはほとんどのユーザに影響するはずです)。BuildLog
ビルドパックサポートクラスは、いくつかのメソッドを廃止し、より詳細な情報を提供する代替メソッドに置き換えました。LoggingSystemProperties
のログバック定数は非推奨になり、LogbackLoggingSystemProperties
が優先されます。UndertowServletWebServerFactory
のisEagerInitFilters
/setEagerInitFilters
メソッドは、isEagerFilterInit
/setEagerFilterInit
に置き換えられました。ApplicationEnvironmentPreparedEvent
、ApplicationStartingEvent
、およびSpringApplicationRunListener
のいくつかのメソッドは、BootstrapContext
をサポートするために非推奨になりました。- ビルドパックサポートの
BuildLog
が更新され、より多くのデータがサポートされるようになりました(ほとんどのユーザはこのクラスを直接使用しません)。 - 一部のSpringMVCおよびサーブレット固有のプロパティは非推奨になりました(上記の「Web構成のプロパティ」セクションを参照)。
- Spring Data Cassandraを使用するヘルスインジケータは非推奨になり、rawドライバを使用するインジケータが優先されます。