ここからは筆者が興味を持った個別セッションについてピックアップし解説していきます。
Bootiful Spring Boot 3.x
本セッションはKeynoteにも登壇したVMwareのJosh Long氏がSpring Boot 3に関わる機能をリアルタイムにコーディングしながら紹介するという内容でした。今回使用されたSpring Bootのバージョンはイベント当時の最新バージョンである3.1.2です。
まず、開発における便利な機能の一つとしてTestcontainersが紹介されました。Testcontainersは、JUnitテストでDockerコンテナを利用することが可能になるJavaライブラリであり、2023年5月リリースのSpring Boot 3.1でサポートの改善がされました。PostgreSQLイメージをBeanで指定するだけで、DockerfileやDB接続情報のプロパティ設定が無くてもTestcontainersによりコンテナが生成され、接続できることがセッション内で実演されました。
次に、可観測性(observability)を高めるための新機能が紹介されました。Spring Boot 2ではメトリクスの測定にはMicrometerを、分散トレーシングはSpring Cloud Sleuthプロジェクトが採用されていました。Spring Boot 3ではこれら2つがMicrometerのObservationAPIとして統合されました。計測したデータはSpring Boot Actuatorを利用することでAPI経由で取得可能です。
続いてSpringの新しいプロダクトであるSpring AIとの連携が紹介されました。Spring BootのエンドポイントからAzure OpenAIを利用するという簡単なデモでしたが、SpringプロダクトもAIサービスへの対応を始めていることが見て取れます。Spring AIプロダクトについては、Mark Pollack氏の個別セッション「Intelligent Beans with Spring AI」でより詳しく説明されていますので、該当セッションのレポートも参照してください。
他にも、Spring Boot 3.0から公式サポートを導入したGraalVMネイティブイメージの紹介やSpring for GraphQLと連携したAPIの作成方法が紹介されました。本セッションで扱われたデモコードはJosh Long氏のGitHubリポジトリから参照可能です。
また、同氏による「Bootiful Spring Boot」のセッションは他イベントでも開催されるため、Spring Bootの最新情報を知りたい場合は今後のイベントもチェックしてみてはいかがでしょうか。
Mind the Gap: Jumping from Spring Boot 2.x to 3.x
本セッションは、VMware 社で Spring Boot Project に携わっている、Phillip Webb 氏が、Spring Boot 2系から3系への移行について説明する内容となります。より具体的には、Spring Boot 2.7.14/Java 8 で作られたサンプルアプリケーションを、Spring Boot 3.0.9/Java 17で動作するようにアップデートする過程がデモ形式で紹介されました。
Spring Boot 2系のEOLが決まっており、3系への移行が必要性が高まる中、本セッションの内容は多くのユーザにとって有益な情報となるでしょう。本稿では Spring boot 2系から3系への移行に関するトピックをいくつかピックアップしてご紹介します。
まずはじめに示されたステップは、Javaバージョンの更新です。Spring boot 3系から、動作要件となるJavaのバージョンが17以上に引き上げられたため、それに対応するためのステップです。Phillip Webb氏は最初のステップではSpring Boot 2.7はJava 17でも動作するため、Spring Boot 2.7を最新版にした上で、システムがJava 17で動作する状態にすること勧めています。
その後、Spring Bootを2.7.14から3.0.9へ差し替えますが、差し替え直後はIDEからも多くの警告が出る状態となっています。次はこの警告に対して下記の修正を加えていきます。
- アップデートに伴うJavaxからJakartaへの依存パッケージ変更
- アップデートに伴うSpring DataのRepositoryクラスの構成変更への対応
- アップデートに伴うSpring SecurityやSpring BootのAPIの非推奨化への対応
セッション内でも言及がありますが、Javax→Jakartaのパッケージの変更については、Javaxパッケージが全てなくなったわけではないため、単純に置換すればよいというものではなく、注意を要します。非推奨APIについては、Javadocに削除の時期や移行先が記載されていることもあるため、参考にすることを推奨しています。
次に、Javaのバージョンを上げたことで利用可能となった新機能を用いたリファクタリングの例(@ConfigurationProperties付与クラスでのJava recordの利用など)が紹介されました。Spring Boot 3系への移行という意味では必須ではありませんが、コードベースを健全に保つ上では、有益だと感じられる内容です。
次に、設定ファイルapplication.yamlのいくつかのプロパティが非推奨になっているのでこれを修正します。ここでは、Spring-boot-properties-migratorを使うことで、非推奨なプロパティと移行先が見つけやすくなることが紹介されました。
ここまでの対応を通してSpring Boot 3系への移行が完了し、サンプルアプリケーションが動作するようになります。
このほか、Spring Boot 3系の新機能に触れ、アプリケーションをNative Imageとしてビルドする方法や、HTTP Interface を利用したクライアントアプリケーションの作成方法などについても紹介があり、Spring Boot 3系を利用した開発への期待感が高まる中で、セッションは締めくくられました。
本セッションのデモに関するコードは Phillip Webb 氏のGitHubリポジトリで確認することができます。Spring Boot 3系への移行に興味のある方は参考にされてはいかがでしょうか。
