Используя плагин openapi maven:
<dependency>
<groupId>org.openapitools</groupId>
<artifactId>openapi-generator-maven-plugin</artifactId>
<version>4.2.2</version>
</dependency>
и создание контроллеров загрузки Spring с использованием конфигурации pom, например:
<plugin>
<groupId>org.openapitools</groupId>
<artifactId>openapi-generator-maven-plugin</artifactId>
<version>4.2.2</version>
<executions>
<execution>
<id>spring-server</id>
<goals>
<goal>generate</goal>
</goals>
<configuration>
<!-- specify the swagger yaml -->
<inputSpec>${project.resources[0].directory}/pet-store.yaml</inputSpec>
<!-- target to generate java client code -->
<generatorName>spring</generatorName>
<!-- pass any necessary config options -->
<configOptions>
<serializableModel>true</serializableModel>
<snapshotVersion>true</snapshotVersion>
</configOptions>
</configuration>
</execution>
</executions>
</plugin>
сгенерирует такой контроллер:
@Controller
@RequestMapping("${openapi.openAPIPetstore.base-path:/v2}")
public class StoreApiController implements StoreApi {
private final NativeWebRequest request;
@org.springframework.beans.factory.annotation.Autowired
public StoreApiController(NativeWebRequest request) {
this.request = request;
}
@Override
public Optional<NativeWebRequest> getRequest() {
return Optional.ofNullable(request);
}
}
Это здорово, но как мне подключиться к этому, чтобы добавить бизнес-логику без изменения фактического сгенерированного кода? Если я расширю контроллер, добавив бизнес-логику, у меня возникнут всевозможные проблемы.
Как вы должны использовать этот сгенерированный код, чтобы расширить его, чтобы добавить правильную бизнес-логику, не изменяя сгенерированный код, что было бы плохо?