如何在不运行应用程序的情况下从Spring应用程序生成OpenAPI



我可以运行Spring Boot应用程序,然后使用springdoc-openapi-maven-plugin工件生成OpenAPI规范

但是,是否还有一种方法可以在不首先运行应用程序的情况下生成规范?

我目前想在GitHub Action中生成规范,直接的方法会简化很多。

您可以使用swagger编辑器:https://editor.swagger.io/

它允许您使用规范编写json/yaml,同时您可以查看结果。

此外,在上半部分有2个特性,允许您基于json/yaml生成代码。例如,您可以创建一个spring应用程序,其中包含要在json/yaml(服务器(中指定的所有端点。

但是您也可以生成HTML。(客户(

要使用springdoc-openapi-maven-plugin生成OpenAPI,可以添加integration-test目标,并在测试后运行mvn verify生成json/yaml规范。(https://springdoc.org/plugins.html)

不幸的是,它会启动您的应用程序并调用OpenAPI端点。如果你的应用程序有启动依赖项(配置属性、数据库等(,那么你有两个选项:

  1. 在运行mvn verify之前,在docker容器中运行您的依赖项。此外,您还需要将属性配置为使用docker主机和端口。

  2. 更优雅的解决方案是创建不同的配置文件,例如openapi,并使用@EnableAutoConfiguration(exclude = ...)禁用数据库自动配置。要禁用组件bean,可以使用@ComponentScan和自定义TypeFilter,例如,这将完全排除Service和Configuration层注入上下文(因为生成OpenAPI规范只需要Controller层(。如果要排除Controller层所依赖的bean,则需要将它们设置为非必需的。您可以通过为每个声明添加@Autowired(required = false)来实现这一点,或者最好是为所有排除的bean并且仅为openapi概要文件添加,为此,您可以使用QualifierAnnotationAutowireCandidateResolver并重写isRequired方法,在该方法中,您可以指定需要返回false的所有排除的beans。

最新更新