我用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)
答案 0 :(得分:1)
你的控制器中的一些实体参数将每一个引用到另一个,这会在swagger中导致无限递归(例如当你使用hibernate时实体中的Set type属性)。
=>使用 @ApiIgnore
忽略实体参数,并使用 @ApiImplicitParams
来描述您的参数
答案 1 :(得分:0)
也许你在注释中有语法, 例如@ApiParam(allowableValues =“range [0-3276843]”),“范围”是错误。