Install
openclaw skills install @wangteng85859/swagger2-to-openapi3Use when migrating Java Spring Boot projects from Swagger 2 (Springfox) to OpenAPI 3.0 (SpringDoc), including annotation replacements, import updates, and javax-to-jakarta migration. Triggers on mentions of Swagger upgrade, OpenAPI migration, springfox to springdoc, or API documentation migration.
openclaw skills install @wangteng85859/swagger2-to-openapi3本 Skill 提供从 Swagger 2 (Springfox) 迁移到 OpenAPI 3.0 (SpringDoc) 的完整指南,包括:
| Swagger 2 | OpenAPI 3.0 | 说明 |
|---|---|---|
@Api | @Tag | 类/接口标注 |
@ApiOperation | @Operation | 方法标注 |
@ApiParam | @Parameter | 参数标注 |
@ApiModel | @Schema | 模型类标注 |
@ApiModelProperty | @Schema | 模型属性标注 |
@ApiResponse | @ApiResponse | 响应标注(保留) |
@ApiResponses | @ApiResponses | 多响应标注(保留) |
@ApiImplicitParam | @Parameter | 隐式参数 |
@ApiImplicitParams | @Parameters | 多隐式参数 |
@Api → @Tag
// Before (Swagger 2)
@Api(tags = "用户管理")
public class UserController {}
// After (OpenAPI 3.0)
@Tag(name = "用户管理")
public class UserController {}
@ApiOperation → @Operation
// Before
@ApiOperation(value = "获取用户信息", notes = "根据ID获取用户详情")
public User getUser(@ApiParam("用户ID") Long id) {}
// After
@Operation(summary = "获取用户信息", description = "根据ID获取用户详情")
public User getUser(@Parameter(description = "用户ID") Long id) {}
Response 处理(复杂替换)
// Before
@ApiOperation(value = "查询用户", response = User.class)
public ResponseEntity<User> query() {}
// After
@Operation(
summary = "查询用户",
responses = {
@ApiResponse(
responseCode = "200",
content = @Content(schema = @Schema(implementation = User.class))
)
}
)
public ResponseEntity<User> query() {}
@ApiModel → @Schema
// Before
@ApiModel(value = "用户对象", description = "用户信息")
public class UserDTO {}
// After
@Schema(description = "用户对象")
public class UserDTO {}
@ApiModelProperty → @Schema
// Before
@ApiModelProperty(value = "用户名", required = true, example = "张三")
private String username;
// After
@Schema(description = "用户名", requiredMode = Schema.RequiredMode.REQUIRED, example = "张三")
private String username;
// 旧包 (Swagger 2)
import io.swagger.annotations.*;
// 新包 (OpenAPI 3.0)
import io.swagger.v3.oas.annotations.*;
import io.swagger.v3.oas.annotations.media.*;
import io.swagger.v3.oas.annotations.responses.*;
import io.swagger.v3.oas.annotations.parameters.*;
| 旧包 (Swagger 2) | 新包 (OpenAPI 3.0) |
|---|---|
io.swagger.annotations.Api | io.swagger.v3.oas.annotations.tags.Tag |
io.swagger.annotations.ApiOperation | io.swagger.v3.oas.annotations.Operation |
io.swagger.annotations.ApiParam | io.swagger.v3.oas.annotations.Parameter |
io.swagger.annotations.ApiModel | io.swagger.v3.oas.annotations.media.Schema |
io.swagger.annotations.ApiModelProperty | io.swagger.v3.oas.annotations.media.Schema |
io.swagger.annotations.ApiResponse | io.swagger.v3.oas.annotations.responses.ApiResponse |
io.swagger.annotations.ApiResponses | io.swagger.v3.oas.annotations.responses.ApiResponses |
| 旧包 (javax) | 新包 (jakarta) |
|---|---|
javax.annotation.Resource | jakarta.annotation.Resource |
javax.annotation.PostConstruct | jakarta.annotation.PostConstruct |
javax.persistence.* | jakarta.persistence.* |
javax.validation.* | jakarta.validation.* |
javax.servlet.* | jakarta.servlet.* |
本 skill 提供自动化脚本帮助快速完成迁移:
# 1. 执行完整迁移(注解 + 包名)
python scripts/migrate_swagger_to_openapi.py --project-path /path/to/your/project
# 2. 仅迁移注解
python scripts/migrate_annotations.py --project-path /path/to/your/project
# 3. 仅迁移包名
python scripts/migrate_imports.py --project-path /path/to/your/project
对于复杂的迁移场景,建议分步进行:
A: tags → name,多标签使用多个 @Tag 注解
// Before
@Api(tags = {"用户管理", "账号管理"})
// After
@Tag(name = "用户管理")
@Tag(name = "账号管理")
A: value → summary,notes → description
// Before
@ApiOperation(value = "获取用户", notes = "详细说明...")
// After
@Operation(summary = "获取用户", description = "详细说明...")
A: 需要使用 @ApiResponse + @Content + @Schema 组合
// Before
@ApiOperation(value = "查询", response = User.class)
// After
@Operation(
summary = "查询",
responses = {
@ApiResponse(
responseCode = "200",
content = @Content(schema = @Schema(implementation = User.class))
)
}
)
A: 检查以下配置:
A: Spring Boot 3.x 已迁移到 Jakarta EE,需要:
javax.* 替换为 jakarta.*迁移要点:
建议按文件逐个检查,特别注意复杂的 @ApiResponse 场景。