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

如何在Swagger-UI中展示未关联接口的Spring Boot实体模型?

解决Swagger-UI不显示Address实体的方法

不用新增控制器,有几种简单方案可以把Address实体添加到Swagger的Models中:

方案1:给实体类添加Swagger注解

直接在Address类上加上@ApiModel注解,Swagger会自动识别该实体并加入Models列表:

@Entity
@Table(name = "Address")
@ApiModel(description = "地址实体类") // 添加此注解
public class Address {
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    @Column(name = "emp_id")
    @ApiModelProperty(value = "主键ID") // 可选,给字段添加说明
    private Long id;

    @Column(name = "first_name")
    @ApiModelProperty(value = "名字")
    private String firstName;

    @Column(name = "last_name")
    @ApiModelProperty(value = "姓氏")
    private String lastName;

    @Column(name = "email_id")
    @ApiModelProperty(value = "邮箱地址")
    private String emailId;

    // getter、setter方法...
}

添加@ApiModel后,即便没有控制器引用这个实体,它也会出现在Swagger-UI的Models里。

方案2:配置Swagger主动指定实体类

如果不想给实体加注解,可以在Swagger配置类中,通过Docket的additionalModels方法指定要包含的实体:

@Configuration
@EnableSwagger2
public class SwaggerConfig {
    @Bean
    public Docket api() {
        return new Docket(DocumentationType.SWAGGER_2)
                .select()
                .apis(RequestHandlerSelectors.basePackage("com.your.package"))
                .paths(PathSelectors.any())
                .build()
                // 主动添加Address实体
                .additionalModels(typeResolver -> typeResolver.resolve(Address.class));
    }

    @Autowired
    private TypeResolver typeResolver;
}

如果用的是Swagger 3.x(SpringDoc),配置方式类似:

@Configuration
public class SpringDocConfig {
    @Bean
    public OpenAPI customOpenAPI() {
        return new OpenAPI()
                .components(new Components()
                        // 将Address加入schemas
                        .addSchemas("Address", SchemaUtils.getSchema(typeResolver, Address.class)));
    }

    @Autowired
    private TypeResolver typeResolver;
}

方案3:通过已有控制器的注解间接引用

可以在现有控制器的方法上,用@ApiResponse标注引用Address实体,Swagger会自动把它加入Models:

@RestController
@RequestMapping("/employees")
public class EmployeeController {
    @GetMapping("/{id}")
    @ApiResponse(responseCode = "200", description = "查询成功", content = @Content(schema = @Schema(implementation = Employee.class)))
    // 额外添加对Address实体的引用,实际业务逻辑无需修改
    @ApiResponse(responseCode = "200", description = "关联地址实体", content = @Content(schema = @Schema(implementation = Address.class)))
    public ResponseEntity<Employee> getEmployee(@PathVariable Long id) {
        // 原有业务逻辑...
    }
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.09 01:50:26