Spring Boot 3 with Open API

 Spring Boot 3 with Open API

 I thought it was hard to find a good example how to implement Open API with Spring Boot 3 and I made a repository at Github with an simple implementation. You find it here

https://github.com/AIMMOTH/spring-boot-3

Maven

Add the following dependencies and plugin in pom.xml:


<properties>
<openapi.generator.version>6.1.0</openapi.generator.version>
<springfox.swagger.version>3.0.0</springfox.swagger.version>
<jackson.databind.version>0.2.4</jackson.databind.version>
</properties>

<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-swagger2</artifactId>
<version>${springfox.swagger.version}</version>
</dependency>
<dependency>
<groupId>org.openapitools</groupId>
<artifactId>jackson-databind-nullable</artifactId>
<version>${jackson.databind.version}</version>
</dependency>

<plugin>
<groupId>org.openapitools</groupId>
<artifactId>openapi-generator-maven-plugin</artifactId>
<version>${openapi.generator.version}</version>
<executions>
<execution>
<id>Platform Service API</id>
<goals>
<goal>generate</goal>
</goals>
<configuration>
<generateApiTests>false</generateApiTests>
<generateModelTests>false</generateModelTests>
<generateSupportingFiles>true</generateSupportingFiles>
<configOptions>
<dateLibrary>java8</dateLibrary>
<interfaceOnly>true</interfaceOnly>
<delegatePattern>true</delegatePattern>
<useSpringBoot3>true</useSpringBoot3>
</configOptions>
<inputSpec>${project.basedir}/src/main/resources/open-api.yaml</inputSpec>
<generatorName>spring</generatorName>
<apiPackage>ce.api.controller</apiPackage>
<modelPackage>ce.api.dto</modelPackage>
</configuration>
</execution>
</executions>
</plugin>

 

Generate and Implement

 Use maven to generate source. It will be put in target folder and you might need to add it in your editor as a source folder.

Then implement the generated interfaces to your controller:

 
@Controller
public class ImmutableController implements ImmutableApi {

@Autowired
private ImmutableService service;

@Override
public ResponseEntity<IdDto> postImmutable(PostImmutableDto value) {
IdDto result = service.createImmutable(value);
return ResponseEntity.ok(result);
}

@Override
public ResponseEntity<ImmutableDto> getImmutable(String id) {
ImmutableDto result = service.readImmutable(id);
return ResponseEntity.ok(result);
}
}

 

Kommentarer

Populära inlägg i den här bloggen

Color Triangel

Färgtriangel