Swagger UI 不显示嵌套的 restcontroller class
Swagger UI not displaying nested restcontroller class
我正在开发一个项目,其中首席开发人员将 RestController classes 嵌套在其他 classes 中。
swagger配置如下:
@Configuration
@EnableSwagger2
public class SwaggerConfig {
@Bean
public Docket api() {
return new Docket(DocumentationType.SWAGGER_2)
.select()
.apis(RequestHandlerSelectors.any())
.paths(PathSelectors.any())
.build();
}
}
并且 class 定义遵循以下格式:
@Slf4j
public class SomeModule {
@RestController @Transactional @RequiredArgsConstructor @RequestMapping(value="/a/b/c/something")
public class Controller {
@PostMapping(value="/")
public HttpEntity<Command> createSomething (@RequestBody CreateSomethingCommand command) {
...
}
...
}
}
从SomeModule
class中取出classController
时,swagger-ui正常显示
但是,当它嵌套在另一个 class 中时,它不起作用。
回答
事实证明,特定的休息控制器甚至无法访问,因为它们嵌套在另一个 class 中。
这会导致 @RestController 和 swagger 文档生成静默失败。
这个问题的解决方案是使嵌套的 classes 静态化!
Static关键字解决问题:public static class Controller {
参考
- How to create a Spring Bean of a Inner class?
我正在开发一个项目,其中首席开发人员将 RestController classes 嵌套在其他 classes 中。
swagger配置如下:
@Configuration
@EnableSwagger2
public class SwaggerConfig {
@Bean
public Docket api() {
return new Docket(DocumentationType.SWAGGER_2)
.select()
.apis(RequestHandlerSelectors.any())
.paths(PathSelectors.any())
.build();
}
}
并且 class 定义遵循以下格式:
@Slf4j
public class SomeModule {
@RestController @Transactional @RequiredArgsConstructor @RequestMapping(value="/a/b/c/something")
public class Controller {
@PostMapping(value="/")
public HttpEntity<Command> createSomething (@RequestBody CreateSomethingCommand command) {
...
}
...
}
}
从SomeModule
class中取出classController
时,swagger-ui正常显示
但是,当它嵌套在另一个 class 中时,它不起作用。
回答
事实证明,特定的休息控制器甚至无法访问,因为它们嵌套在另一个 class 中。
这会导致 @RestController 和 swagger 文档生成静默失败。
这个问题的解决方案是使嵌套的 classes 静态化!
Static关键字解决问题:public static class Controller {
参考
- How to create a Spring Bean of a Inner class?