カサレアル 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.validation
やjavax.annotation
のimport処理が多数含まれ、そのままだと使用できなかったため追加の対応をおこなった備忘録になります。
※OpenAPI Generatorの基本的な使い方については、以前の記事でも触れています。
APIクライアントとスタブAPIサーバーのプログラムを自動生成して、疎通確認をする
OpenAPIGeneratorの自動生成におけるコントローラーの生成単位はURLで決まる
参考
- Spring Framework Versions # Java/Jakarta EE Versions
- openapi-generator リポジトリ
- Documentation for the java Generator
- Documentation for the spring Generator
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のオプション機能で対応していて良かったです。