使用openapi-generator进行自动生成
1. 原因
在使用Java Spring Boot创建Web API时,可以使用插件”openapi-generatorr”来根据创建的OpenAPI自动生成Spring Boot中使用的Rest API请求和响应的属性,并自动生成用于调用Rest API控制器的方法和响应模型。关于这些内容,本文将给予说明。
2. 环境
eclipse(版本:2022-12 (4.26.0))
java(版本:17)
spring boot 3.1.1
Gradle – Groovy
3. 步骤
(1)确认复制材料的层级。

在(1)的层次结构中,使用git(※提前下载Git)等工具,从以下网站复制资源。


确认副本已成功复制。(openapi-generator)


(4)使用Eclipse创建Java的Spring Boot(Gradle)项目(即使事先创建了也没有问题)。


将在步骤3中下载的文件夹复制到适用于eclipse插件的文件夹中。

(6)将文件夹名称更改为“org.openapi.generator”(与其他库名称保持一致)


在Eclipse中,显示”openapi-generator”。

对于初期的内容,将“//追加”的部分进行修改。
plugins {
id 'java'
id 'org.springframework.boot' version '3.1.1'
id 'io.spring.dependency-management' version '1.1.0'
id "org.openapi.generator" version "6.2.0" // 追加
}
group = 'com.example'
version = '0.0.1-SNAPSHOT'
sourceCompatibility = '17' // 追加
java {
sourceCompatibility = '17'
}
configurations {
compileOnly {
extendsFrom annotationProcessor
}
}
// 追加 Start
ext {
// 出力先を設定
openApiOutputDir = "$rootDir/generated"
}
// 出力したソースをビルドパスに追加
sourceSets.main.java.srcDirs += ["$openApiOutputDir/src/main/java"]
// 追加 End
repositories {
mavenCentral()
}
dependencies {
implementation 'org.springframework.boot:spring-boot-starter-web'
// 追加 Start
// 依存性を追加
implementation 'org.openapitools:jackson-databind-nullable:0.2.1'
implementation 'org.springframework.boot:spring-boot-starter-validation'
implementation group: 'org.springdoc', name: 'springdoc-openapi-ui', version: '1.6.9'
compileOnly 'io.swagger:swagger-annotations:1.6.2'
// 追加 End
compileOnly 'org.projectlombok:lombok'
developmentOnly 'org.springframework.boot:spring-boot-devtools'
annotationProcessor 'org.projectlombok:lombok'
testImplementation 'org.springframework.boot:spring-boot-starter-test'
}
// 追加 Start
// (openApiの設定を追加)
openApiGenerate {
generatorName = 'spring'
inputSpec = "$rootDir/openapi/shukanTalentJohoBFF.yaml".toString() //対象のOpenAPI
outputDir = "$openApiOutputDir"
apiPackage = 'com.api'
modelPackage = 'com.model'
invokerPackage = "org.openapi.example.invoker"
configOptions = [
dateLibrary: 'java8',
interfaceOnly: 'true',
skipDefaultInterface: 'true'
]
}
// 追加 End
tasks.named('test') {
useJUnitPlatform()
}

※ 「$rootDir/」是固定的,需要在后面指定存放创建结果的目录名称。

※ 「$rootDir/」是固定的,在其后面指定第②个工作表中准备的文件夹名称和本次要处理的OpenAPI yaml文件的名称。

(8) 执行openApiGenerate



确认输出目标
请确认以下组成部分



4. 最后
在创建Controller时,您可以继承“ShukanTalentJohoBFFApi.java”中的方法,并在其中引用“ShukanTalentJohoBFF.java”以使用模型。下一篇将留下关于“SQLGenerator”的文章。