Spring Bootのバージョンアップ作業で発生したOpenAPI Generator使用時の対応について

カサレアル Advent Calendar 2023の12/15の記事です。

はじめに

Spring Boot 3.0 以降のバージョンは、Spring Framework 6.0 以降のバージョンが使用されています。Spring Framework 6.0 以降では、それ以前までのバージョンと違いJava EEからJakarta EEに変更されています。

Spring Framework Versions # Java/Jakarta EE Versions

OpenAPI Generatorを使用してJavaのクライアント/サーバのコードを生成する際に、そのままだとjavax.validationjavax.annotationのimport処理が多数含まれ、そのままだと使用できなかったため追加の対応をおこなった備忘録になります。

※OpenAPI Generatorの基本的な使い方については、以前の記事でも触れています。
APIクライアントとスタブAPIサーバーのプログラムを自動生成して、疎通確認をする
OpenAPIGeneratorの自動生成におけるコントローラーの生成単位はURLで決まる

参考

OpenAPI Generatorを使用したコード生成について

今回は2023/12時点での最新安定版であるOpenAPI Generator 7.1.0 を使用しました。openapi-generator リポジトリページのDownload JARに記載されているリンクから取得したopenapi-generator-cli-7.1.0.jarを使用してWindows 10 環境で実行しています。

クライアント(Java)のコード生成について

クライアント(Java)の場合はuseJakartaEeオプションでtrueを指定することで、javaxパッケージを参照せずにjakartaパッケージを参照するコードが生成されるようになります。

java -jar openapi-generator-cli-7.1.0.jar generate -i openapi.yaml -g java -o openapi --additional-properties useJakartaEe=true

サーバ(Spring)のコード生成

サーバ(Spring)の場合はuseSpringBoot3オプションでtrueを指定することで、javaxパッケージを参照せずにjakartaパッケージを参照するコードが生成されるようになります。
useSpringBoot3オプションを使用するとSpring Boot 3.x で使用する依存関係が設定されるのに加え、useJakartaEeオプションも自動で有効になるとのことでした。

java -jar openapi-generator-cli-7.1.0.jar generate -i openapi.yaml -g spring -o openapi --additional-properties useSpringBoot3=true

おわりに

OpenAPI Generatorで生成したコードを手動で修正するというのはやりたくなかったので、OpenAPI Generatorのオプション機能で対応していて良かったです。


--------------------------
システム開発のご要望・ご相談はこちらから
--------------------------
【この技術ブログを読んだエンジニアの皆様へ】
カサレアルブログをお読みいただき、ありがとうございます!

私たちは、常に新しい技術に挑戦し、ユーザーのニーズに応えるサービスを提供しています。
もし、当社の技術への情熱や、会社・チーム・社員の雰囲気に共感いただけたなら、
ぜひ私たちと一緒に働きませんか?
現在、株式会社カサレアルでは事業拡大に伴い、新たな仲間となるエンジニアを積極的に募集しています。

少しでも興味をお持ちいただけましたら、まずは弊社のことを知っていただけると嬉しいです。
▼採用サイト
https://www.casareal.co.jp/recruit/career
▼社員インタビュー
https://hrmos.co/pages/casareal/jobs/0000016
▼エンジニアの仲間になる! エントリーはこちらから
https://hrmos.co/pages/casareal/jobs

皆様のエントリーを心よりお待ちしています!

巷で話題のコードエディタ「Cursor」を試してみたらなかなかすごくて次世代を感じたはなし
16年間ありがとうございました。

コメントを残す

メールアドレスが公開されることはありません。 ※ が付いている欄は必須項目です

コメント ※

名前 ※

メール ※

サイト