@ApiModel 和 @ApiModelProperty 是 Swagger 2 (即 springfox-swagger)中的注解。
在升级到 Springfox 3.0.0 或迁移到 SpringDoc OpenAPI (springdoc-openapi)时,这些注解发生了变化:
✅ 升级后的注解(使用 SpringDoc OpenAPI / OpenAPI 3)
| Swagger 2 (Springfox) | SpringDoc OpenAPI (OpenAPI 3) |
|---|---|
@ApiModel |
@Schema |
@ApiModelProperty |
@Schema |
📌 用法对比
Swagger 2(旧版)
java
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
@ApiModel(description = "用户信息")
public class User {
@ApiModelProperty(value = "用户ID", example = "1")
private Long id;
@ApiModelProperty(value = "用户名", required = true)
private String username;
}
SpringDoc OpenAPI(新版)
java
import io.swagger.v3.oas.annotations.media.Schema;
@Schema(description = "用户信息")
public class User {
@Schema(description = "用户ID", example = "1")
private Long id;
@Schema(description = "用户名", requiredMode = Schema.RequiredMode.REQUIRED)
private String username;
}
🔁 迁移说明
-
替换依赖 : 如果从
springfox迁移到springdoc,需要移除springfox-swagger2和springfox-swagger-ui,xml<dependency> <groupId>org.springdoc</groupId> <artifactId>springdoc-openapi-starter-webmvc-ui</artifactId> <version>2.8.13</version> </dependency> -
替换注解:
- 所有
@ApiModel→@Schema - 所有
@ApiModelProperty→@Schema required = true→requiredMode = Schema.RequiredMode.REQUIRED
- 所有
-
访问地址:
- Swagger UI 地址从
/swagger-ui.html变为/swagger-ui.html(新版路径可能略有不同,通常是/swagger-ui/index.html)
- Swagger UI 地址从
✅ 总结
| 目的 | 旧注解(Swagger 2) | 新注解(OpenAPI 3 / SpringDoc) |
|---|---|---|
| 类说明 | @ApiModel |
@Schema |
| 字段说明 | @ApiModelProperty |
@Schema |
所以,@ApiModel 和 @ApiModelProperty 的升级版本注解都是 @Schema。