Skip to content

Commit 5bb12ec

Browse files
committed
Add pre-loading setting to load OpenAPI early
Add configuration setting to `SpringDocConfigProperties` to enable pre-loading of OpenAPI. This setting is false by default. When instantiating `AbstractOpenApiResource` the OpenAPI is generated in a separate thread. Fixes #850
1 parent b99a2d4 commit 5bb12ec

File tree

2 files changed

+18
-0
lines changed

2 files changed

+18
-0
lines changed

springdoc-openapi-common/src/main/java/org/springdoc/api/AbstractOpenApiResource.java

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -37,6 +37,7 @@
3737
import java.util.Objects;
3838
import java.util.Optional;
3939
import java.util.Set;
40+
import java.util.concurrent.Executors;
4041
import java.util.stream.Collectors;
4142

4243
import com.fasterxml.jackson.annotation.JsonView;
@@ -200,6 +201,10 @@ protected AbstractOpenApiResource(String groupName, ObjectFactory<OpenAPIBuilder
200201
operationCustomizers.get().removeIf(Objects::isNull);
201202
this.operationCustomizers = operationCustomizers;
202203
this.actuatorProvider = actuatorProvider;
204+
if (springDocConfigProperties.isPreLoadingEnabled()) {
205+
Executors.newSingleThreadExecutor()
206+
.execute(this::getOpenApi);
207+
}
203208
}
204209

205210
/**

springdoc-openapi-common/src/main/java/org/springdoc/core/SpringDocConfigProperties.java

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -130,6 +130,11 @@ public class SpringDocConfigProperties {
130130
*/
131131
private boolean showLoginEndpoint;
132132

133+
/**
134+
* Allow for pre-loading OpenAPI
135+
*/
136+
private boolean preLoadingEnabled = false;
137+
133138
/**
134139
* Is use fqn boolean.
135140
*
@@ -472,6 +477,14 @@ public void setWriterWithDefaultPrettyPrinter(boolean writerWithDefaultPrettyPri
472477
this.writerWithDefaultPrettyPrinter = writerWithDefaultPrettyPrinter;
473478
}
474479

480+
public void setPreLoadingEnabled(boolean preLoadingEnabled) {
481+
this.preLoadingEnabled = preLoadingEnabled;
482+
}
483+
484+
public boolean isPreLoadingEnabled() {
485+
return preLoadingEnabled;
486+
}
487+
475488
/**
476489
* The type Model converters.
477490
*/

0 commit comments

Comments
 (0)