2015-12-24 52 views
2

我想添加springfox-swagger到我的Spring MVC項目。我有以下配置:Springfox Swagger拋出StackOverflowError

@Configuration 
@EnableSwagger2 
@ComponentScan(basePackageClasses = com.mycompany.MyCtrl.class) 
public class SpringFoxConfig { 

    @Autowired 
    private TypeResolver typeResolver; 

    @Bean 
    public Docket api() { 
     return new Docket(DocumentationType.SWAGGER_2); 
    } 
} 

@Configuration 
@EnableWebMvc 
@EnableCaching 
@EnableAspectJAutoProxy(proxyTargetClass = true) 
@ComponentScan(basePackageClasses = { ApplicationConfig.class, AppConfig.class}) 
@Import(SpringFoxConfig.class) 
public class ApplicationConfig extends WebMvcConfigurerAdapter implements CachingConfigurer { 

    @Override 
    public void addResourceHandlers(ResourceHandlerRegistry registry) { 
     registry.addResourceHandler("swagger-ui.html").addResourceLocations("classpath:/META-INF/resources/"); 
     registry.addResourceHandler("/webjars/**").addResourceLocations("classpath:/META-INF/resources/webjars/"); 
    } 
} 

但部署後,我無法訪問任何控制器和後1-5分鐘,我得到以下堆棧跟蹤:

2015-12-24 18:26:46,297 ERROR [org.springframework.web.context.ContextLoader] (MSC service thread 1-5) Context initialization failed: com.google.common.util.concurrent.ExecutionError: java.lang.StackOverflowError 

at springfox.documentation.spi.schema.contexts.ModelContext.hasSeenBefore(ModelContext.java:156) [springfox-spi-2.3.0.jar:2.3.0] 

at springfox.documentation.spi.schema.contexts.ModelContext.parentHasSeenBefore(ModelContext.java:174) [springfox-spi-2.3.0.jar:2.3.0] 
at springfox.documentation.spi.schema.contexts.ModelContext.hasSeenBefore(ModelContext.java:157) [springfox-spi-2.3.0.jar:2.3.0] 

沒有springfox,我的控制器正常工作。我做錯了什麼?

+0

查看您的日誌可能會提供有關哪種模型導致問題的線索。 –

+0

您是否嘗試升級到2.6.0以查看您的問題是否已修復? –

回答

0

我已經看到了這種行爲,當你有一個主細節DTO雙向引用:

class Master { 
    List<Detail> details; 
} 

class Details { 
    Master master; 
} 

針對此問題的解決方法是添加hidden = true屬性@ApiParam註釋這種類型的參數:

ResponseEnitity<?> controller(@ApiParam(hidden = true) @RequestBody Master master) { 
} 

我相信這是Springfox中的一個bug,但我沒有機會報告它。

相關問題