11月22日、Spring Boot 3.4.0がリリースされた。本リリースには多数の新機能や改善点が含まれている。
以下に、その内容を簡潔にまとめて紹介する。
主な新機能と改善点
構造化ロギングの追加
Elastic Common Schema(ECS)、Graylog Extended Log Format(GELF)、およびLogstash形式に対応する構造化ロギングが新たに追加された。この機能を活用することで、ログフォーマットが標準化され、ElasticやGraylogのようなログ分析プラットフォームとの統合が容易になる。
設定例として、構造化ログ出力をファイルで有効にする場合は以下のように設定する:
logging.structured.format.file=ecs
コンソール出力で有効化する場合は、同様に以下のように設定する:
logging.structured.format.console=gelf
また、カスタムフォーマットの定義についても公式ドキュメントで詳細に説明されている。
自動構成Beanの型追加サポート
アプリケーションで、既存の自動構成と同じ型のBeanを追加する必要がある場合、@Bean(defaultCandidate=false)
を利用して、カスタムBeanを自動構成から明確に分離できるようになった。この機能は特に複数のデータソース(DataSource)やエンティティマネージャー(EntityManagerFactory)を扱う際に有用で、従来よりもシンプルな構成での設定が可能となる。
仮想スレッドのサポート強化
仮想スレッドが有効化されている場合、Spring Bootの以下のコンポーネントが仮想スレッドを利用するようになった:
- OtlpMeterRegistry
- Undertow Webサーバ
仮想スレッドの利用により、スレッドのコストを大幅に削減し、高いスループットと効率性を実現可能である。
Docker ComposeおよびTestcontainersの改善
Docker Composeでは、複数の構成ファイルをサポートするようになった。また、Testcontainersに関しては、以下のような具体的な改善が含まれている:
- KafkaContainerの正式サポート
- Redis StackおよびRedis Stack Server用のコンテナイメージサポート
- Grafana LGTM用のLgtmStackContainerの追加サポート
これらの改良により、開発者は複雑な統合テストをより簡単にセットアップ可能である。
Actuatorの拡張
Actuatorの新機能として、SSL証明書の情報表示とヘルスチェックが追加された。
- /actuator/infoエンドポイントでは、SSL証明書の有効期限、発行者、サブジェクト情報を表示する。
設定例:
management.health.ssl.certificate-validity-warning-threshold=30d
この設定により、有効期限が30日未満の証明書を警告するよう設定可能。さらに、証明書が無効な場合はヘルスステータスをOUT_OF_SERVICEに設定する。
ARM対応のイメージビルドを標準サポート
Spring Boot 3.4.0では、Paketo Buildpacksのデフォルトビルダーとしてpaketobuildpacks/builder-jammy-java-tinyを採用しており、ARMとx64の両方のプラットフォームをサポートする。さらに、MavenおよびGradleプラグインに新しいオプションが追加され、信頼されたビルダーとのセキュアなイメージビルドが可能になった。
MockMvcのAssertJサポート追加
AssertJがクラスパスに含まれている場合、自動構成によりMockMvcTesterが利用可能になる。これにより、リクエストとアサーションを流れるように記述でき、テストコードが読みやすくなる。
依存関係のアップグレード
Spring Boot 3.4.0では、複数のSpringプロジェクトやサードパーティライブラリが最新の安定版にアップグレードされている。主要なアップデートとして以下が挙げられる:
- Spring Framework 6.2
- Spring Data 2024.1
- Hibernate 6.6
- Testcontainers 1.20.3
その他の変更
- SSL情報およびヘルスチェック機能が追加され、証明書の有効期限などの情報が提供されるようになった。
- ActiveMQ Classicの埋め込みブローカーのサポート復活。
- OpenTelemetryのログエクスポートのためのOTLP gRPCサポート。
詳細はリリースノートを参照していただきたい。