2024年7月15日の週は、Spring エコシステムの話題に富んだ1週間だった。見どころは次のようなマイルストーンのリリースだ。今回リリースが発表されたのは、Spring Boot 3.4.0-M1、Spring Framework 6.2.0-M6、Spring Security 6.4.0-M1、Spring Session 3.4.0-M1、Spring Integration 6.4.0-M1、Spring Modulith 1.3.0-M1、Spring AMQP 3.2.0-M1、Spring for Apache Kafka 3.3.0-M1である。
Spring Boot
Spring Boot 3.4.0の最初のマイルストーンリリースでは、バグ修正、ドキュメンテーションの改善、依存関係のアップグレードに加えて、次のような新機能が提供される。PatternLayout ロギングに代わる構造化ロギングのサポートや、MockMvcTester
クラスの自動設定によるSpring Framework MockMvc
クラスのAssertJサポート、また、TestcontainersサポートやDocker Composeサポートの改善だ。このリリースの詳細は、リリースノートに掲載。
同様に、Spring Bootのバージョン3.3.2と3.2.8では、ドキュメントの改善や依存関係のアップグレードに加え、次のような注目すべき問題が解決された。 それは、OnClassCondition
で定義されたresolveOutcomesThreaded()
からオートコンフィギュレーションをする際のNullPointerException
だ。この問題は、 ConditionOutcome
配列のインスタンスが一杯になる、または、TestcontainersLifecycleBeanPostProcessor
クラスのインスタンスがスコープされたBeanと正常に動作しないために発生する。今回のリリースの詳細は、バージョン3.3.2とバージョン3.2.8のリリースノートに掲載。
Spring Framework
Spring Framework 6.2.0-M5のリリースから1週間後、Spring Framework 6.2.0の6番目のマイルストーンリリースでは、以前の6.x世代とのバイナリの後方互換性に対応するだけでなく、次のような新機能も提供される。
AbstractServerHttpRequest
クラスにおけるRequestPath
インターフェイスをオンデマンドで初期化する機能、ReflectivePropertyAccessor
クラスにリンクするために、MapAccessor
クラスを読み取り専用にするサポート、そしてDefaultPartHttpMessageReader
がリアクタースケジューラを積極的にインスタンス生成しないようにする機能などだ。今回のリリースの詳細は、リリースノートに掲載。
Spring Security
Spring Security 6.4.0の最初のマイルストーンリリースでは、バグ修正、依存関係のアップグレードのほか、以下のような新機能が提供される。RelyingPartyRegistrationRepositoryインターフェイスの補完として、CashingReingPartyRegistrationRepositoryの新規クラスが導入され、初期登録の読み込みが保留になるほか、DefaultMethodSecurityExpressionHandler クラスにKotlin サポートが追加され、イミュータブルのKotlinのコレクションやMapのステートが変更できないようになる。その他にも、フォームデータがUTF-8の場合、charsetを追加せず、フォームデータに適応するよう新たな変更がなされた。今回のリリースの詳細は、リリースノートに掲載。
Spring for GraphQL
Spring for GraphQLのバージョン1.3.2と1.2.8がリリースされ、Kotlin関数にマッピングされたスキーマフィールドがSchemaMappingInspector
クラスでマッピングされていないと報告される問題のバグ修正と目覚ましい改善が行われた。今回のリリースの詳細は、バージョン1.3.2とバージョン1.2.8のリリースノートに掲載。
Spring Session
Spring Session 3.4.0の最初のマイルストーンリリースでは、バグ修正、依存関係のアップグレードに加え、次のような新機能が追加された。UserDetails
インターフェイスのデフォルト実装であるUser
が、ユーザー定義のカスタム実装に代わってに返される問題が解決されるほか、MongoSession
クラスをpublic
に戻され、開発者がAbstractMongoSessionConverter
クラスのメソッドを実装できないようになった。今回のリリースの詳細は、リリースノートに掲載。
Spring Integration
Spring Integration 6.4.0の最初のマイルストーンリリースでは、バグ修正、ドキュメント化の改善、依存関係のアップグレードに加え、次の新機能が追加された。分散LockRegistryインターフェース実装で、データベースロックの所有権が失われてもunlock()
操作からConcurrentModificationException
のスローができるほか、MQTT 5.0 仕様で定義されたチャネルアダプター用のサブスクリプションIDが改良された。今回のリリースの詳細は、リリースノート と新機能のページに掲載。
同様に、Spring Integrationのバージョン6.3.2と6.2.7では、依存関係のアップグレードに加え、次のような注目すべき問題が解決された。MicrometerMeterRegistry
クラスの複数Beanの登録でSpring-integration
アクチュエータエンドポイントが動作しない問題の解決や、IntegrationManagementConfiguration
クラスで定義されたobtainObservationPatterns()
methodが修正され、JavaHashSet
ソートで与えられたパターンの順序保持が可能になった。今回のリリースの詳細は、バージョン 6.3.2およびバージョン 6.2.7 のリリースノートに掲載。
Spring Modulith
Spring Modulithのバージョン1.3.0-M1、1.2.2、1.1.7がリリースされ、バグ修正、依存関係のアップグレードに加え、次の新機能が追加された。ドキュメンテーションのレンダリング前にDocumenter
クラスが対象のフォルダを空にするオプションが追加されたほか、モジュールパッケージの外の@ApplicationModuleTest
を用いたアノテーションが可能になった。これらのリリースでSpring Boot 3.4.0-M1とSpring Framework 6.2.0-M6もアップグレードされる。今回のリリースの詳細は、バージョン1.3.0-M1、バージョン1.2.2、バージョン1.1.7のリリースノートに掲載。
Spring AMQP
Spring AMQP 3.2.0の最初のマイルストーンリリースでは、バグ修正、依存関係のアップグレード、および次のような新機能が提供される。RabbitMQ Consistent Hash Exchange Type(x-consistent-hash
)のサポート、RabbitListenerErrorHandler
インターフェイスで非推奨とされたメソッドの削除などである。今回のリリースの詳細は、リリースノートに掲載。
Spring for Apache Kafka
Spring for Apache Kafka 3.3.0の最初のマイルストーンリリースでは、バグ修正、依存関係のアップグレードや次の新機能が追加された。新しい ConcurrentContainerStoppedEvent クラスでは、アプリケーションが ContainerStoppedEvent クラスのインスタンスを受け取る前にすべての同時実行メッセージが処理されるほか、RecordFilterStrategyインターフェイスがバッチ・メッセージを使用する際に空のリストを受け取る機能も追加された。今回のリリースの詳細は、リリースノートに掲載。
同様に、Spring for Apache Kafkaのバージョン3.2.2と3.1.7では、依存関係のアップグレードと、KafkaListenerEndpointRegistry
クラスで定義されているgetUnregisteredListenerContainer()
メソッドが、@KafkaListener
アノテーションの代わりに手動でカスタムコンテナを登録する際にNULL
を返す問題が解消された。今回のリリースの詳細は、バージョン3.2.2とバージョン3.1.7のリリースノートに掲載。
Spring for Apache Pulsar
Spring for Apache Pulsarのバージョン1.1.2と1.0.8がリリースされた。今回のリリース対象は、Spring Framework 6.1.10、Micrometer Metrics 1.13.2、1.12.8、JUnit 5.10.3など、多くの依存関係のアップグレードである。これらのバージョンはSpring Boot 3.3.2と3.2.8に含まれる。今回のリリースの詳細は、バージョン1.1.2とバージョン1.0.8のリリースノートに掲載。