问题:接口调用时,返回的数据有时会包含上一次调用接口的数据。
我的代码:
@Data
@AllArgsConstructor
@NoArgsConstructor
@ApiModel("Result响应")
public class Result implements Serializable {
@ApiModelProperty(value="编码 200:成功 其他值代表失败")
private Integer code;
@ApiModelProperty(value="消息内容")
private Object data;
@ApiModelProperty(value="响应数据")
private String msg;
//问题在这
static Result result = new Result();
public Result ok(Object data){
result.setCode(200);
result.setData(data);
result.setMsg("SUCCESS");
return result;
}
public Result ok(){
result.setCode(200);
result.setMsg("SUCCESS");
return result;
}
public Result err(Integer code, String msg){
result.setCode(code);
result.setMsg(msg);
return result;
}
public Result err(Integer code){
result.setCode(code);
result.setMsg("ERROR");
return result;
}
}
原因:在返回类中是使用了单列模式,导致了线程不安全。
线程安全定义:线程安全一般指在多线程情况下,一段代码或者某个对象可以正确地应对多线程访问,不会导致数据丢失,错乱等不一致问题。
解决方式:
一,不使用单列模式
二,加synchronized(但是这个对于我的问题显然不太现实)