使用spring boot运行swagger2时出现stackoverflowError

时间:2017-02-01 11:09:15

标签: spring spring-boot swagger swagger-ui swagger-2.0

我用spring boot配置swagger2。 这在小项目中效果很好。但是在很多休息的大项目中导致stackOverflowError。

swagger config:

@Configuration
@EnableSwagger2
public class SwaggerConfiguration {

@Bean
public Docket api(){
    return new Docket(DocumentationType.SWAGGER_2)
            .select()
            .apis(RequestHandlerSelectors.basePackage("org.dordas.swagger.web.controller"))
            .paths(PathSelectors.ant("/api/**"))
            .build();
}
}

错误:

org.springframework.context.ApplicationContextException: Failed to start bean 'documentationPluginsBootstrapper';
nested exception is com.google.common.util.concurrent.ExecutionError: java.lang.StackOverflowError
at org.springframework.context.support.DefaultLifecycleProcessor.doStart(DefaultLifecycleProcessor.java:176)

2 个答案:

答案 0 :(得分:1)

你的控制器中的一些实体参数将每一个引用到另一个,这会在swagger中导致无限递归(例如当你使用hibernate时实体中的Set type属性)。

=>使用 @ApiIgnore 忽略实体参数,并使用 @ApiImplicitParams 来描述您的参数

答案 1 :(得分:0)

也许你在注释中有语法, 例如@ApiParam(allowableValues =“range [0-3276843]”),“范围”是错误。