0

我的项目目录结构如下

└── activity
    ├── app
    │   └── ActivityApplication.kt
    ├── controller
    │   └── WelcomeMessageController.kt
    ├── exception
    │   ├── ActivityErrorResponse.kt
    │   ├── handler
    │   │   └── ActivityServiceExceptionHandler.kt
    │   └── response
    │       └── ResponseCode.kt
    ├── model
    │   └── WelcomeMessage.kt
    ├── repository
    │   └── WelcomeMessageRepository.kt
    ├── service
    │   └── WelcomeService.kt
    └── swagger
        └── SwaggerConfig.kt

当我将ActivityApplication.kt文件移动到根包时,即直接在activityswagger 页面下开始正常工作。但是,当我将它移动到一个包中时(在这种情况下app),那么招摇页面除了出现以下错误外不显示任何内容

错误: 无法推断基本 URL。这在使用动态 servlet 注册或 API 位于 API 网关后面时很常见。基本 url 是提供所有 swagger 资源的根。例如,如果 api 在http://example.org/api/v2/api-docs上可用,那么基本 url 是http://example.org/api/。请手动输入位置:

我的招摇配置如下

@Configuration
@EnableSwagger2
class SwaggerConfig {
    @Bean
    fun api(): Docket {
        return Docket(DocumentationType.SWAGGER_2)
                .pathProvider(object: RelativePathProvider(null) {
                    override fun getApplicationBasePath(): String {
                        return "/activity"
                    }
                })
                .select()
                .apis(RequestHandlerSelectors.basePackage("com.example.activity.controller"))
                .build()
                .apiInfo(buildApiInfo())
    }

    private fun buildApiInfo(): ApiInfo? {
        return ApiInfo(
                ...)
    }
}

ActivityApplication.kt只有以下代码

@SpringBootApplication
class ActivityApplication

fun main(args: Array<String>) {
    runApplication<ActivityApplication>(*args)
}
  • Java 版本:OpenJDK 11
  • Springfox-swagger2 版本:2.9.2
4

1 回答 1

1

Spring Boot 试图在更深的包中找到它的组件。即,如果您放置@SpringBootApplicationactivity.app.ActivityApplication,Spring Boot 只会在任何其他包上搜索activity.app并且不会转到, 。activity.swagger

如果您不想将您移动ActivityApplicationactivity包,那么您需要在@SpringBootApplication注释的scanBasePackages参数中手动指定基本包:@SpringBootApplication(scanBasePackages = "activity").

注意:它应该是完整的包装,例如mycompany.myproject.activity)。

于 2020-01-12T19:18:58.337 回答