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

Spring Boot中Swagger/OpenAPI如何管理导入模块接口并调整示例字段顺序

实现方案

一、认证模块接口分组管理

你引入的外部认证模块接口,可以通过OpenAPI的分组配置单独归类,和业务自身接口分开,方便查找维护。
如果使用springdoc-openapi依赖,直接新增分组配置类即可:

@Configuration
public class SwaggerGroupConfig {
    @Bean
    public GroupedOpenApi authApi() {
        return GroupedOpenApi.builder()
                .group("认证相关接口")
                .packagesToScan("com.my.package.ldap.security")
                .build();
    }

    // 业务接口可按需新增其他分组
    @Bean
    public GroupedOpenApi businessApi() {
        return GroupedOpenApi.builder()
                .group("业务接口")
                .packagesToScan("com.my.package.business")
                .build();
    }
}

配置完成后Swagger顶部会出现分组下拉选项,可以单独查看认证模块的所有接口,不会和业务接口混排。
Swagger端点列表

二、请求示例字段排序+可选字段自动隐藏

@JsonPropertyOrder不生效的核心原因是默认配置下OpenAPI不会主动读取Jackson的排序注解,结合你需要省去手动删除可选字段的需求,可按以下方案处理:

方案1:快速适配Jackson排序规则(无需修改原有注解)

直接在项目配置文件中开启对应适配项,即可让已写的@JsonPropertyOrder生效:

  • application.properties配置:
# 开启Jackson注解排序适配
springdoc.api-docs.resolve-schema-properties-in-order=true
springdoc.swagger-ui.use-fqn-with-arrays=true
  • application.yml配置:
springdoc:
  api-docs:
    resolve-schema-properties-in-order: true
  swagger-ui:
    use-fqn-with-arrays: true

重启服务后字段就会按照你指定的domain -> username -> password顺序展示。

方案2:用OpenAPI原生注解同时解决排序+可选字段问题

如果方案1适配后效果不符合预期,可以直接用Swagger原生@Schema注解做配置,优先级最高,同时可以直接指定字段必填性,让非必填字段不出现在默认示例里,省去每次手动删除的步骤:

import io.swagger.v3.oas.annotations.media.Schema;

@Schema(description = "认证请求参数")
@JsonPropertyOrder({
    "domain",
    "username",
    "password"
})
public class AuthRequest {
    @Schema(
        description = "认证域",
        requiredMode = Schema.RequiredMode.REQUIRED,
        example = "CORP",
        order = 1
    )
    private String domain;

    @Schema(
        description = "登录用户名",
        requiredMode = Schema.RequiredMode.REQUIRED,
        example = "admin",
        order = 2
    )
    private String username;

    @Schema(
        description = "登录密码",
        requiredMode = Schema.RequiredMode.REQUIRED,
        example = "******",
        order = 3
    )
    private String password;

    // 可选字段标记为非必填,默认示例不会自动带出
    @Schema(
        description = "验证码",
        requiredMode = Schema.RequiredMode.NOT_REQUIRED,
        order = 4
    )
    private String captcha;

    @Schema(
        description = "记住登录状态",
        requiredMode = Schema.RequiredMode.NOT_REQUIRED,
        order = 5
    )
    private Boolean rememberMe;
}

注意:order属性值越小,字段在文档和示例中的排序越靠前。标记为NOT_REQUIRED的字段不会出现在默认生成的请求示例中,调试时不需要手动删除。

老版本Springfox兼容说明

如果使用的是已经停更的Springfox(Swagger2),本身不支持直接读取@JsonPropertyOrder配置,除了添加自定义模型排序规则外,更建议直接升级到维护中的springdoc-openapi,Springfox已停止维护3年以上,兼容性问题较多。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.29 11:12:31