BT

最新技術を追い求めるデベロッパのための情報コミュニティ

寄稿

Topics

地域を選ぶ

InfoQ ホームページ ニュース Spring Boot 3.2、仮想スレッドと最新のRestClientとjdbcClientをサポート

Spring Boot 3.2、仮想スレッドと最新のRestClientとjdbcClientをサポート

原文リンク

Spring Bootチームは2023年11月にSpring Boot 3.2をリリースした。この最新リリースは機能が満載で、もっとも注目すべきは仮想スレッドとCoordinated Restore at Checkpoint (CRaC)のサポートだ。その他の機能としては、SSLバンドルのリロード、RestClientjdbcClientインターフェースのサポート、オブザーバビリティの改善などがある。

JDK 21で特に重要な機能はProject Loomの仮想スレッドで、JEPは高スループットの並行アプリケーションの記述、維持、観測の労力を劇的に減らす軽量スレッドと説明している。

Spring Boot 3.2には仮想スレッド機能のサポートが統合されている。これを使うには、プロパティspring.threads.virtual.enabledtrueに設定し、JDK21を使う。つまり、ウェブリクエストを処理するアプリケーションコードは仮想スレッドで動作するようになる。

さらに、プロパティで仮想スレッドを有効にすると、SimpleAsyncTaskExecutorクラスは 仮想スレッドを使うように設定され、@EnableAsyncでアノテーションされたメソッド、非同期SpringのMVCリクエスト、Spring WebFluxのブロック実行呼び出しの動作に直接影響する。

この機能によって影響を受ける他の領域は、RabbitMQとKafkaリスナー、Spring Data Redis、Spring for Apache Pulsarである。

RestClientRestTemplateに代わる最新の同期HTTPクライアントで、Spring Framework 6.1で導入された。Spring BootはRestClientインスタンスを作成するためにビーンRestClient.Builderを作成し、事前に構成する。これはSpring WebFluxの対応するWebClientのような機能的なスタイルのAPIを提供する。RestClient使う主な利点の1つは、リモートのREST APIを呼び出すためにSpring WebFluxの依存関係を追加する必要がない。

Springチームは、Spring WebFluxやProject Reactorが使われていない限り、リモートRESTサービスを呼び出すにはRestClientを使うことを推奨している。この場合、WebClientが推奨される。

RestClientと同様に、新しいインターフェイス jdbcClientはSpring Framework 6.1で導入され、Spring Boot 3.2では自動設定される。これは、一般的なデータベースを操作をするための流暢なAPIを提供する。

SSLバンドルはSpring Boot 3.1で初めて導入され、キーストア、証明書、秘密鍵などのSSL情報を構成して消費する。Spring Boot 3.2では、プロパティreload-on-update=trueを設定することで、SSLトラストマテリアルが変更されたときにSSLバンドルをリロードできる。ホットリロードはNettyとTomcatウェブサーバーでサポートされている。関連するプロパティspring.ssl.bundle.watch.file.quiet-period=10sを設定することで、変更が検出されるまでの期間を設定できる。

いくつかのオブザーバビリティの改善がSpring Boot 3.2に採用された。@Timed,@Counted,@NewSpan,@ContinueSpan,@Observedといった Micrometerのアノテーションは、spring-boot-starter-aopがクラスパスにあるときに宣言的に使用できる。@Scheduledでアノテートされたメソッドは、オブザーバビリティのためにインスツルメンテーションされる。プロパティmanagement.observations.enablefalseに設定することで、指定した名前で始まるオブザベーションを無効にできる。プロパティmanagement.observations.enableはSpring Boot 3.2では非推奨となり、management.observations.key-valuesに置き換えられる。このプロパティですべてのオブザベーションに適用できる共通のキー値を追加する。このリリースで改善されたオブザーバビリティの全リストを読む。

BroadcomのSpring Developer AdvocateであるJosh Long氏は、InfoQに次のように語った。

SpringとJavaの開発者にとって、これほど良いタイミングはない。Spring Boot 3.2は、Project CRaCのサポート(OpenJDKの特定のディストリビューションで利用可能)とProject Loom(Java21で利用可能)により、実行時の大きな効率化を実現する。これらの機能は、GraalVMネイティブイメージをサポートする既存の作業と組み合わされ、本番環境で最高の体験を求めるSpring Boot開発者に素晴らしい機会を提供する。

アップグレードと注目すべき変更点の完全なリストは公式リリースノートを参照のこと。

作者について

この記事に星をつける

おすすめ度
スタイル

BT