无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文件,可以按以下步骤配置:
- 编写一个批量生成的执行类,扫描指定包下的所有POJO类,将解析得到的所有Schema填充到OpenAPI对象中,输出json到
target/swagger.json路径 - 配置
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
相关产品推荐
相关产品推荐

