lombok与swagger冲突的坑, 实体类接参swagger-ui界面上参数不齐全

4 篇文章 0 订阅
3 篇文章 0 订阅

使用的swagger2

GET请求的接口

实体类接收参数

实体类继承了一个抽象类

swagger-ui界面参数列表只显示抽象类的属性框

@Override
    @ApiOperation("查询全部-条件查询")
    @GetMapping(value = "/list")
    public Result<List<Category>> listCategory(Category Category) {
        List<Category> data = categoryService.listCategory(Category);
        return Result.success(data);
    }

实体类:

@Getter
@Setter
@ToString
@Accessors(chain = true)
@ApiModel(value="Category",description="多级分类", parent = AbsBaseDto.class)
public class Category extends AbsBaseDto<Integer> {
    /**
     * 分类ID
     */
    @ApiModelProperty(value="多级分类ID",name="categoryId")
    private Integer categoryId;

    /**
     * 分类名称
     */
    @NotNull(message = "多级分类名称 不能为空")
    @ApiModelProperty(value="多级分类名称",name="categoryName")
    private String categoryName;

    /**
     * 分类说明
     */
    @ApiModelProperty(value="多级分类说明",name="remark")
    private String remark;
}

抽象类:

@Getter
@Setter
public abstract class AbsBaseDto<ID extends Serializable>
	implements
		IBaseDto<ID> {

	protected ID id;
	
	@ApiModelProperty(value="状态",name="status")
	protected Integer status;// 状态
	
	@ApiModelProperty(value="创建时间",name="createdTime")
	protected Date createdTime;
	
	@ApiModelProperty(value="创建者id",name="creatorId")
	protected Long creatorId;
	
	@ApiModelProperty(value="最后修改时间",name="updatedTime")
	protected Date updatedTime;

	@ApiModelProperty(value="是否存在",name="exists")
	protected Boolean exists;// 是否存在

}

参数列表只显示抽象类的属性框, 最重要的接受实体类的参数一个也不显示

图片说明

经过排查,发现是因为lombok 的@Accessors(chain = true)注解导致的,此注解是使实体类的set方法返回对象本身,使用build式的编码方式,但是这里就却与swagger的注解产生了冲突,导致swagger获取不到实体类的属性,swagger-ui界面无法显示参数.

去掉@Accessors(chain = true)注解之后,swagger正常!

在这里插入图片描述

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值