摘要
项目是微服务架构,其中模块居多,但是我在跑其中一个模块时,发现无法查看 swagger 文档。由此进行了一系列排查。
正文
本文项目源码,Swagger2 访问路径 /v2/api-docs,路径源于 springfox.documentation.swagger2.web.Swagger2ControllerWebMvc#SWAGGER2_SPECIFICATION_PATH
一、项目 Build 出现 OOM
Java 项目 rebuild / run 时,提示 OutOfMemory。原因是 Java 项目过于臃肿了。
解决办法是File > Settings > Build,Execution,Deployment > Compiler,调大 Shared build process heap size(Mbytes) 的数值。

二、Swagger 404 但是一会又好了
已经确定 swagger 的配置没有问题,但是启动后访问 /v2/api-docs,居然提示 Unable to find specification for group
根据断点排查得知,swagger 的启动流程是这样的 启动容器 > 扫描文档并追加到文档缓存,如果项目本身特别臃肿的时候,就会出现类似,项目启动成功,但是访问 swagger 反而是 404。

三、Swagger2 空指针 Unable to scan documentation context default
微服务模块有很多,但是其中一个微服务的 swagger 居然打不开。日志如下

我排查问题的步骤如下
跟踪堆栈,发现怎么变量还重复了,排查一下 model,发现是修饰符设置成了 public 导致的,设置为 private 即可解决

这只是导致问题诸多成因的其中之一,不过排查问题的原理皆如此。
