记一次Swagger字段属性说明不显示的问题

5,293 阅读1分钟

先上结论:

在swagger 2.0.6等后面的高版本中,由于升级了Springfox基础组件,如果开发者使用类似JRebel这类热加载插件的时候,会出现类字段没有的情况。将项目部署后就可以显示了。

问题描述:

swagger版本:

<!--Swagger2支持-->
<dependency>
    <groupId>io.springfox</groupId>
    <artifactId>springfox-swagger2</artifactId>
    <version>2.5.0</version>
</dependency>
<!--SwaggerUI支持-->
<dependency>
    <groupId>com.github.xiaoymin</groupId>
    <artifactId>swagger-bootstrap-ui</artifactId>
    <version>1.9.6</version>
</dependency>

代码:

// 实体类
@ApiModel(description = "查询参数")
@Data
public class DataExchangeQuery {

    @ApiModelProperty(value = "站点ID",required = true)
    @WhereType(filed = "STID")
    public String siteId;
}
// controller
@ApiOperation(value="查询水量数据")
@PostMapping("/water/volume/list")
public Result<List<MonitorWaterVolume>> get(@RequestBody @Validated DataExchangeQuery query){
    QueryWrapper<MonitorWaterVolume> queryWrapper = WrapperGenUtil.invoke(query);
    return GenResult.ok(siMonitorWaterVolumeMapper.selectList(queryWrapper));
}

结果:swagger-ui界面没有字段属性说明:

image.png

解决

尝试了各种办法,包括替换swagger包等,最后在knief官网看到可能是jrebel这类热加载插件的问题,最后将项目打包部署在tomcat中,解决!

这里也附上一些常见的swagger-ui界面没有字段属性说明的原因:

  • 返回值是 泛型/Object/map等