我们想将Swagger用于现有的Spring-boot项目(> 70模型,> 250端点),并且遇到一个问题,即在设置Swagger时,应用程序无法启动,并且进入无限循环。
...
[DEBUG] 2020-01-04 23:28:32.500 Recursively resolving dependencies for type X;
[DEBUG] 2020-01-04 23:28:32.500 Adding type X2; for parameter x2
[DEBUG] 2020-01-04 23:28:32.501 Recursively resolving dependencies for type X2;
[DEBUG] 2020-01-04 23:28:32.501 Adding type Ljava/util/List<X3>; for parameter x3s
[DEBUG] 2020-01-04 23:28:32.501 Adding collectionElement type X3;
[DEBUG] 2020-01-04 23:28:32.501 Recursively resolving dependencies for collectionElement type X3;
[DEBUG] 2020-01-04 23:28:32.501 Adding type Ljava/util/List<X4;>; for parameter x4s
[DEBUG] 2020-01-04 23:28:32.501 Adding collectionElement type X4;
[DEBUG] 2020-01-04 23:28:32.501 Recursively resolving dependencies for collectionElement type X4;
...
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.1.3.RELEASE</version>
<relativePath /> <!-- lookup parent from repository -->
</parent>
...
<dependencies>
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-swagger2</artifactId>
<version>2.9.2</version>
</dependency>
....
<dependencies>
感谢任何帮助,甚至包括一些有关如何深入研究此问题的提示,因为日志没有帮助,我也不知道从哪里开始! 如果您需要更多详细信息,请告诉我。
答案 0 :(得分:1)
遇到了同样的问题,由于弹簧的魔力,我们最终使用id而不是整个对象来解决此问题。只需为引起问题的参数添加@ApiIgnore
,然后手动添加ApiImplicitParam
,如
@ApiImplicitParam(
required = true,
value = "XxxId, of provided Xxx. Not Required",
paramType = "query",
dataType = "int"
)
@GetMapping(value = ["/XXX_PATH"])
fun getYyy(
@ApiIgnore @RequestParam(required = false, value = Xxx_ID) xxx: Xxx?
): List<Yyy>
我想,如果您真的需要在文档中包含整个对象,而不仅仅是它们的ID,则需要阅读dataType
上的文档。祝你好运。
答案 1 :(得分:0)
您可以全局忽略特定于问题的类。
docket.ignoredParameterTypes(Order.class)