Skip to content

Commit fed017e

Browse files
author
bnasslahsen
committed
Lazy Initialisation breaks WebFlux support. Fixes #562
1 parent 8316907 commit fed017e

File tree

8 files changed

+26
-1
lines changed

8 files changed

+26
-1
lines changed

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

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -49,6 +49,7 @@
4949
import org.springframework.context.annotation.Bean;
5050
import org.springframework.context.annotation.Conditional;
5151
import org.springframework.context.annotation.Configuration;
52+
import org.springframework.context.annotation.Lazy;
5253
import org.springframework.core.LocalVariableTableParameterNameDiscoverer;
5354
import org.springframework.core.env.Environment;
5455
import org.springframework.util.CollectionUtils;
@@ -73,17 +74,20 @@ LocalVariableTableParameterNameDiscoverer localSpringDocParameterNameDiscoverer(
7374
}
7475

7576
@Bean
77+
@Lazy(false)
7678
AdditionalModelsConverter pageableSupportConverter() {
7779
return new AdditionalModelsConverter();
7880
}
7981

8082
@Bean
83+
@Lazy(false)
8184
PropertyCustomizingConverter propertyCustomizingConverter(Optional<List<PropertyCustomizer>> customizers) {
8285
return new PropertyCustomizingConverter(customizers);
8386
}
8487

8588
@Bean
8689
@ConditionalOnMissingBean
90+
@Lazy(false)
8791
ResponseSupportConverter responseSupportConverter() {
8892
return new ResponseSupportConverter();
8993
}
@@ -98,6 +102,7 @@ OpenAPIBuilder openAPIBuilder(Optional<OpenAPI> openAPI, ApplicationContext cont
98102
}
99103

100104
@Bean
105+
@Lazy(false)
101106
ModelConverterRegistrar modelConverterRegistrar(Optional<List<ModelConverter>> modelConverters) {
102107
return new ModelConverterRegistrar(modelConverters.orElse(Collections.emptyList()));
103108
}
@@ -142,6 +147,7 @@ GenericParameterBuilder parameterBuilder(PropertyResolverUtils propertyResolverU
142147

143148
@Bean
144149
@ConditionalOnProperty(SPRINGDOC_SCHEMA_RESOLVE_PROPERTIES)
150+
@Lazy(false)
145151
OpenApiCustomiser propertiesResolverForSchema(PropertyResolverUtils propertyResolverUtils, OpenAPIBuilder openAPIBuilder) {
146152
return openApi -> {
147153
Components components = openApi.getComponents();
@@ -152,6 +158,7 @@ OpenApiCustomiser propertiesResolverForSchema(PropertyResolverUtils propertyReso
152158

153159
@Bean
154160
@Conditional(CacheOrGroupedOpenApiCondition.class)
161+
@Lazy(false)
155162
BeanFactoryPostProcessor springdocBeanFactoryPostProcessor(Environment environment) {
156163
return beanFactory -> {
157164
final BindResult<SpringDocConfigProperties> result = Binder.get(environment)

springdoc-openapi-data-rest/src/main/java/org/springdoc/data/rest/SpringDocDataRestConfiguration.java

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -40,6 +40,7 @@
4040
import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
4141
import org.springframework.context.annotation.Bean;
4242
import org.springframework.context.annotation.Configuration;
43+
import org.springframework.context.annotation.Lazy;
4344
import org.springframework.data.querydsl.binding.QuerydslBindingsFactory;
4445
import org.springframework.data.rest.core.config.RepositoryRestConfiguration;
4546
import org.springframework.hateoas.Link;
@@ -63,6 +64,7 @@ class QuerydslProvider {
6364

6465
@Bean
6566
@ConditionalOnMissingBean
67+
@Lazy(false)
6668
QuerydslPredicateOperationCustomizer queryDslQuerydslPredicateOperationCustomizer(Optional<QuerydslBindingsFactory> querydslBindingsFactory) {
6769
if (querydslBindingsFactory.isPresent()) {
6870
getConfig().addRequestWrapperToIgnore(Predicate.class);
@@ -75,6 +77,7 @@ QuerydslPredicateOperationCustomizer queryDslQuerydslPredicateOperationCustomize
7577

7678
@Bean
7779
@ConditionalOnMissingBean
80+
@Lazy(false)
7881
HalProvider halProvider(Optional<RepositoryRestConfiguration> repositoryRestConfiguration) {
7982
return new HalProvider(repositoryRestConfiguration);
8083
}
@@ -86,6 +89,7 @@ HalProvider halProvider(Optional<RepositoryRestConfiguration> repositoryRestConf
8689
* @see org.springframework.hateoas.mediatype.hal.Jackson2HalModule.HalLinkListSerializer#serialize(Links, JsonGenerator, SerializerProvider)
8790
*/
8891
@Bean
92+
@Lazy(false)
8993
OpenApiCustomiser linksSchemaCustomiser(Optional<RepositoryRestConfiguration> repositoryRestConfiguration) {
9094
if (!repositoryRestConfiguration.isPresent() || !repositoryRestConfiguration.get().useHalAsDefaultJsonMediaType()) {
9195
return openApi -> {

springdoc-openapi-groovy/src/main/java/org/springdoc/groovy/SpringDocGroovyConfiguration.java

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,7 @@
2525
import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
2626
import org.springframework.context.annotation.Bean;
2727
import org.springframework.context.annotation.Configuration;
28+
import org.springframework.context.annotation.Lazy;
2829

2930
import static org.springdoc.core.Constants.SPRINGDOC_ENABLED;
3031

@@ -33,12 +34,14 @@
3334
public class SpringDocGroovyConfiguration {
3435

3536
@Bean
37+
@Lazy(false)
3638
Object ignoreGroovyMetaClass() {
3739
SpringDocUtils.getConfig().addRequestWrapperToIgnore(MetaClass.class);
3840
return null;
3941
}
4042

4143
@Bean
44+
@Lazy(false)
4245
RequestTypeToIgnoreConverter requestTypeToIgnoreConverter() {
4346
return new RequestTypeToIgnoreConverter();
4447
}

springdoc-openapi-kotlin/src/main/java/org/springdoc/kotlin/SpringDocKotlinConfiguration.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,7 @@
2626
import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
2727
import org.springframework.context.annotation.Bean;
2828
import org.springframework.context.annotation.Configuration;
29+
import org.springframework.context.annotation.Lazy;
2930
import org.springframework.context.annotation.Primary;
3031

3132
import static org.springdoc.core.Constants.SPRINGDOC_ENABLED;
@@ -42,7 +43,7 @@ public class SpringDocKotlinConfiguration {
4243
}
4344

4445
@Bean
45-
@Primary
46+
@Lazy(false)
4647
KotlinCoroutinesReturnTypeParser kotlinCoroutinesReturnTypeParser() {
4748
return new KotlinCoroutinesReturnTypeParser();
4849
}

springdoc-openapi-webflux-core/src/main/java/org/springdoc/webflux/core/MultipleOpenApiWebFluxConfiguration.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -36,6 +36,7 @@
3636
import org.springframework.context.annotation.Bean;
3737
import org.springframework.context.annotation.Conditional;
3838
import org.springframework.context.annotation.Configuration;
39+
import org.springframework.context.annotation.Lazy;
3940
import org.springframework.web.reactive.result.method.RequestMappingInfoHandlerMapping;
4041

4142
import static org.springdoc.core.Constants.SPRINGDOC_ENABLED;
@@ -49,6 +50,7 @@ public class MultipleOpenApiWebFluxConfiguration {
4950

5051
@Bean
5152
@ConditionalOnMissingBean
53+
@Lazy(false)
5254
MultipleOpenApiResource multipleOpenApiResource(List<GroupedOpenApi> groupedOpenApis,
5355
ObjectFactory<OpenAPIBuilder> defaultOpenAPIBuilder, AbstractRequestBuilder requestBuilder,
5456
GenericResponseBuilder responseBuilder, OperationBuilder operationParser,

springdoc-openapi-webflux-core/src/main/java/org/springdoc/webflux/core/SpringDocWebFluxConfiguration.java

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -41,6 +41,7 @@
4141
import org.springframework.boot.autoconfigure.condition.ConditionalOnWebApplication;
4242
import org.springframework.context.annotation.Bean;
4343
import org.springframework.context.annotation.Configuration;
44+
import org.springframework.context.annotation.Lazy;
4445
import org.springframework.core.LocalVariableTableParameterNameDiscoverer;
4546
import org.springframework.web.reactive.result.method.RequestMappingInfoHandlerMapping;
4647

@@ -54,6 +55,7 @@ public class SpringDocWebFluxConfiguration {
5455

5556
@Bean
5657
@ConditionalOnMissingBean
58+
@Lazy(false)
5759
OpenApiResource openApiResource(OpenAPIBuilder openAPIBuilder, AbstractRequestBuilder requestBuilder,
5860
GenericResponseBuilder responseBuilder, OperationBuilder operationParser,
5961
RequestMappingInfoHandlerMapping requestMappingHandlerMapping,
@@ -82,6 +84,7 @@ GenericResponseBuilder responseBuilder(OperationBuilder operationBuilder, List<R
8284

8385
@Bean
8486
@ConditionalOnMissingBean
87+
@Lazy(false)
8588
WebFluxSupportConverter webFluxSupportConverter() {
8689
return new WebFluxSupportConverter();
8790
}

springdoc-openapi-webmvc-core/src/main/java/org/springdoc/webmvc/core/MultipleOpenApiSupportConfiguration.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -39,6 +39,7 @@
3939
import org.springframework.context.annotation.Bean;
4040
import org.springframework.context.annotation.Conditional;
4141
import org.springframework.context.annotation.Configuration;
42+
import org.springframework.context.annotation.Lazy;
4243
import org.springframework.web.servlet.mvc.method.RequestMappingInfoHandlerMapping;
4344

4445
import static org.springdoc.core.Constants.SPRINGDOC_ENABLED;
@@ -52,6 +53,7 @@ public class MultipleOpenApiSupportConfiguration {
5253

5354
@Bean
5455
@ConditionalOnMissingBean
56+
@Lazy(false)
5557
MultipleOpenApiResource multipleOpenApiResource(List<GroupedOpenApi> groupedOpenApis,
5658
ObjectFactory<OpenAPIBuilder> defaultOpenAPIBuilder, AbstractRequestBuilder requestBuilder,
5759
GenericResponseBuilder responseBuilder, OperationBuilder operationParser,

springdoc-openapi-webmvc-core/src/main/java/org/springdoc/webmvc/core/SpringDocWebMvcConfiguration.java

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -45,6 +45,7 @@
4545
import org.springframework.boot.autoconfigure.condition.ConditionalOnWebApplication;
4646
import org.springframework.context.annotation.Bean;
4747
import org.springframework.context.annotation.Configuration;
48+
import org.springframework.context.annotation.Lazy;
4849
import org.springframework.core.LocalVariableTableParameterNameDiscoverer;
4950
import org.springframework.web.method.HandlerMethod;
5051
import org.springframework.web.servlet.mvc.method.RequestMappingInfoHandlerMapping;
@@ -60,6 +61,7 @@ public class SpringDocWebMvcConfiguration {
6061

6162
@Bean
6263
@ConditionalOnMissingBean
64+
@Lazy(false)
6365
OpenApiResource openApiResource(OpenAPIBuilder openAPIBuilder, AbstractRequestBuilder requestBuilder,
6466
GenericResponseBuilder responseBuilder, OperationBuilder operationParser,
6567
RequestMappingInfoHandlerMapping requestMappingHandlerMapping,
@@ -100,6 +102,7 @@ ActuatorProvider actuatorProvider(WebMvcEndpointHandlerMapping webMvcEndpointHan
100102
}
101103

102104
@Bean
105+
@Lazy(false)
103106
OperationCustomizer actuatorCustomizer(ActuatorProvider actuatorProvider) {
104107
return new OperationCustomizer() {
105108
private int methodCount;

0 commit comments

Comments
 (0)