当前位置: 首页 > 知识库问答 >
问题:

当应用程序启动文件放置在包中时,Swagger不起作用。科特林Spring靴

夹谷斌蔚
2023-03-14

我的项目目录结构如下所示

└── 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),那么swagger页面不会显示任何内容,只会显示以下错误

@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(
                ...)
    }
}
@SpringBootApplication
class ActivityApplication

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

共有1个答案

程俊健
2023-03-14

Spring Boot试图在更深的包中找到它的组件。即。如果将@springbootapplication放在activity.app.activityapplication上,Spring Boot将只在activity.app下搜索,而不会在任何其他包上搜索activity.swagger

如果您不想将ActivityApplication移动到Activity包,那么您需要在@springbootApplication注释的scanBasePackages参数中手动指定基本包:@springbootApplication(scanBasePackages=“activity”)

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

 类似资料:
  • 我在Tomcat 9.0.2上使用Spring Boot 1.5.9,并且我尝试使用Spring@Cacheable调度缓存刷新作业,该作业在应用程序启动时运行并每24小时重复一次,如下所示: 缓存服务如下: 存储库代码: 稍后在我的webservice中,当尝试获取查找时,如下所示: 第一次调用它从数据库中获取查找,后续调用它从缓存中获取,而它应该在web服务的第一次调用中从缓存中获取? 为什么

  • 我正在尝试使用简单的spring启动应用程序。我在ApplicationContext上启动应用程序时遇到问题。 2017-04-26 11:17:31.101警告14528---[main]s.c.a.AnnotationConfigApplicationContext:上下文初始化期间遇到异常-取消刷新尝试:org。springframework。豆。工厂未满足的PendencyExcepti

  • 问题内容: 我正在使用Weblogic 10.3.6门户服务器。Weblogic 10.3.6始终使用weblogic随附的common-fileupload jar。但是我希望服务器使用战争中拥有的服务器。 用例是我有war1,它使用war2内的apache jars。我在两次大战的weblogic.xml中添加了以下几行,但它无法正常工作,并且仍在加载特定于weblogic的jar。 知道为什

  • 我正在尝试在web应用程序中使用Freemarker进行电子邮件模板制作。 我声明了一个FreeMarkerConfiguration FactoryBean,如下所示: 运行我的JUnit时一切正常,但在我的webapp中运行时,我的bean被Spring启动FreeMarkerAutoConfiguration“覆盖”。 我已尝试: 从我的gradle文件中删除sping-boot-start

  • 我不熟悉测微计和普罗米修斯,我只使用dropwizards的指标。这让我有点困扰,我实际上需要有3个不同的实例来运行以查看指标 带测微计的Spring靴应用程序本身 使用dropwizard,我可以立即公开聚合指标。 这就是为什么我很好奇是否有可能将Prometheus与我的Spring Boots应用程序一起启动以立即公开很好的聚合数据。到目前为止,我还没有找到任何有用的东西,所以我希望这里的某

  • 我在intellij上启动spring boot应用程序时遇到问题,它失败了,并显示以下消息:与目标VM断开连接,地址:'127.0.0.1:49784',传输:'socket' 过程结束,退出代码为255。以前有人遇到过这种情况吗?