Why HATEOAS starts creating issue for spring-boot version >= 2.2.x during startup with Swagger 2.x?

前端 未结 14 2252
忘掉有多难
忘掉有多难 2020-12-09 15:18

I moved my project from spring-boot 2.1.9 to 2.2.0.

While starting the project, I am facing the below error messages.

Caused by: org.sprin         


        
14条回答
  •  情话喂你
    2020-12-09 16:02

    Resolved it, it was happening due to integration when Swagger + HATEOAS was used with Spring Boot 2.2.4.RELEASE

    package com.company.springbootworks.swagger;
    
    import java.time.LocalDate;
    import java.util.ArrayList;
    import java.util.List;
    
    import org.springframework.context.annotation.Bean;
    import org.springframework.context.annotation.Configuration;
    import org.springframework.hateoas.client.LinkDiscoverer;
    import org.springframework.hateoas.client.LinkDiscoverers;
    import org.springframework.hateoas.mediatype.collectionjson.CollectionJsonLinkDiscoverer;
    import org.springframework.http.ResponseEntity;
    import org.springframework.plugin.core.SimplePluginRegistry;
    
    import springfox.documentation.builders.ApiInfoBuilder;
    import springfox.documentation.builders.PathSelectors;
    import springfox.documentation.builders.RequestHandlerSelectors;
    import springfox.documentation.service.ApiInfo;
    import springfox.documentation.spi.DocumentationType;
    import springfox.documentation.spring.web.plugins.Docket;
    import springfox.documentation.swagger.web.DocExpansion;
    import springfox.documentation.swagger.web.ModelRendering;
    import springfox.documentation.swagger.web.OperationsSorter;
    import springfox.documentation.swagger.web.TagsSorter;
    import springfox.documentation.swagger.web.UiConfiguration;
    import springfox.documentation.swagger.web.UiConfigurationBuilder;
    import springfox.documentation.swagger2.annotations.EnableSwagger2;
    
    @Configuration
    @EnableSwagger2
    public class SwaggerConfig {
    
        @Bean
        public LinkDiscoverers discoverers() {
            List plugins = new ArrayList<>();
            plugins.add(new CollectionJsonLinkDiscoverer());
            return new LinkDiscoverers(SimplePluginRegistry.create(plugins));
    
        }
    
        @Bean
        public Docket eDesignApi(SwaggerConfigProperties swaggerConfigProperties) {
            return new Docket(DocumentationType.SWAGGER_2).apiInfo(apiInfo(swaggerConfigProperties))
                    .enable(Boolean.valueOf(swaggerConfigProperties.getEnabled())).select()
                    .apis(RequestHandlerSelectors.any()).paths(PathSelectors.any()).build().pathMapping("/")
                    .directModelSubstitute(LocalDate.class, String.class).genericModelSubstitutes(ResponseEntity.class)
                    .useDefaultResponseMessages(Boolean.valueOf(swaggerConfigProperties.getUseDefaultResponseMessages()))
                    .enableUrlTemplating(Boolean.valueOf(swaggerConfigProperties.getEnableUrlTemplating()));
        }
    
        @Bean
        UiConfiguration uiConfig(SwaggerConfigProperties swaggerConfigProperties) {
            return UiConfigurationBuilder.builder().deepLinking(Boolean.valueOf(swaggerConfigProperties.getDeepLinking()))
                    .displayOperationId(Boolean.valueOf(swaggerConfigProperties.getDisplayOperationId()))
                    .defaultModelsExpandDepth(Integer.valueOf(swaggerConfigProperties.getDefaultModelsExpandDepth()))
                    .defaultModelExpandDepth(Integer.valueOf(swaggerConfigProperties.getDefaultModelExpandDepth()))
                    .defaultModelRendering(ModelRendering.EXAMPLE)
                    .displayRequestDuration(Boolean.valueOf(swaggerConfigProperties.getDisplayRequestDuration()))
                    .docExpansion(DocExpansion.NONE).filter(Boolean.valueOf(swaggerConfigProperties.getFilter()))
                    .maxDisplayedTags(Integer.valueOf(swaggerConfigProperties.getMaxDisplayedTags()))
                    .operationsSorter(OperationsSorter.ALPHA)
                    .showExtensions(Boolean.valueOf(swaggerConfigProperties.getShowExtensions()))
                    .tagsSorter(TagsSorter.ALPHA).supportedSubmitMethods(UiConfiguration.Constants.DEFAULT_SUBMIT_METHODS)
                    .validatorUrl(null).build();
        }
    
        private ApiInfo apiInfo(SwaggerConfigProperties swaggerConfigProperties) {
            return new ApiInfoBuilder().title(swaggerConfigProperties.getTitle())
                    .description(swaggerConfigProperties.getDescription()).version(swaggerConfigProperties.getApiVersion())
                    .build();
        }
    }
    

    and below are the swagger dependencies

    
        1.8
        2.9.2
        1.5.21
        1.5.21
        2.0.0.BUILD-SNAPSHOT
    
    
    
    
        io.springfox
        springfox-swagger2
        ${swagger.version}
    
    
        io.springfox
        springfox-swagger-ui
        ${swagger.version}
    
    
        io.swagger
        swagger-annotations
        ${swagger-annotations.version}
    
    
        io.swagger
        swagger-models
        ${swagger-models.version}
    
    

提交回复
热议问题