问题描述:
使用swagger过程中,针对接口返回值包含的结构体Class A使用注解说明后,发现接口描述信息中返回值对应并不是对应的实体类Class A,而是变为了类Class B,当然class B对应的类属性也不会是class A的属性。
问题剖析
@ApiModel("这是class A的描述")
public class A {
@ApiModelProperty("id")
private int id;
@ApiModelProperty("id")
private String name;
}
正常情况下,大家使用的应该都是上面类注解,属性注解进行说明。但是由于项目大多是分模块多人配合,因此就有可能出现下面这种情况:
程序员 A:
@ApiModel("这是class A的描述")
public class A {
@ApiModelProperty("id")
private int id;
@ApiModelProperty("id")
private String name;
}
程序员B
@ApiModel("这是class A的描述")
public class B {
@ApiModelProperty("id")
private int idB;
@ApiModelProperty("id")
private String nameB;
}
二者的类描述由于某种原因惊人的一致,那么会出现什么情况呢
二人的接口返回值中原本分别包含 class A 和class B的,现在全都变成了class A
也就是说,因为类注解的说明重复导致了class B被swagger 误判为他就是class A,在swagger doc中原本返回值中的class B也就直接被用class A覆盖了。
解决方案
不妨把你的类注解和属性注解中的值加一个统一的前缀