You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

无REST/Spring框架依赖 基于POJO生成swagger.json规范方案咨询

纯POJO类无Web框架场景生成Swagger模型规范解决方案

核心依赖

不需要引入任何Spring、JAX-RS相关依赖,仅需引入Swagger官方的Jackson适配模块即可,Maven依赖配置如下:

<dependencies>
    <dependency>
        <groupId>io.swagger.core.v3</groupId>
        <artifactId>swagger-jackson2</artifactId>
        <version>2.2.20</version>
    </dependency>
    <dependency>
        <groupId>com.fasterxml.jackson.core</groupId>
        <artifactId>jackson-databind</artifactId>
        <version>2.15.2</version>
    </dependency>
</dependencies>

单类Swagger规范生成实现

你需要的swaggerSpecGenerator方法可以基于Swagger官方的ModelResolver实现,代码示例如下:

import com.fasterxml.jackson.databind.ObjectMapper;
import io.swagger.v3.core.jackson.ModelResolver;
import io.swagger.v3.oas.models.media.Schema;

public class SwaggerSpecGenerator {
    private static final ObjectMapper OBJECT_MAPPER = new ObjectMapper();
    private static final ModelResolver MODEL_RESOLVER = new ModelResolver(OBJECT_MAPPER);

    public static Schema swaggerSpecGenerator(Class<?> clazz) {
        // 直接解析类生成Swagger Schema模型
        return MODEL_RESOLVER.resolve(clazz);
    }

    // 扩展方法:将Schema转为JSON字符串
    public static String swaggerSpecToJson(Schema schema) throws Exception {
        return OBJECT_MAPPER.writerWithDefaultPrettyPrinter().writeValueAsString(schema);
    }

    public static void main(String[] args) throws Exception {
        // 调用示例
        Schema coordinateSpec = swaggerSpecGenerator(Coordinate.class);
        System.out.println(swaggerSpecToJson(coordinateSpec));
    }
}

注:如果Lombok生成的getter/setter无法被识别,可以调整ObjectMapper的字段可见性配置,允许直接访问类字段:

OBJECT_MAPPER.setVisibility(PropertyAccessor.FIELD, JsonAutoDetect.Visibility.ANY);

批量生成swagger.json并接入Maven流程

如果需要在Maven构建阶段自动扫描指定包下所有POJO,生成完整的swagger.json文件,可以按以下步骤配置:

  1. 编写一个批量生成的执行类,扫描指定包下的所有POJO类,将解析得到的所有Schema填充到OpenAPI对象中,输出json到target/swagger.json路径
  2. 配置exec-maven-plugin插件绑定到compile阶段执行该类,pom配置示例:
<build>
    <plugins>
        <plugin>
            <groupId>org.codehaus.mojo</groupId>
            <artifactId>exec-maven-plugin</artifactId>
            <version>3.1.0</version>
            <executions>
                <execution>
                    <phase>compile</phase>
                    <goals>
                        <goal>java</goal>
                    </goals>
                    <configuration>
                        <mainClass>com.yourpackage.BatchSwaggerGenerator</mainClass>
                    </configuration>
                </execution>
            </executions>
        </plugin>
    </plugins>
</build>

扩展支持

  • POJO上的Jackson注解(@JsonProperty、@JsonIgnore、@JsonFormat等)会自动同步到Swagger规范中,和你实际序列化行为完全一致
  • 可以直接在POJO类、字段上加Swagger的@Schema注解自定义描述、示例值、必填规则等,无需额外适配

内容的提问来源于stack exchange,提问作者Benjamin

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.29 09:54:08