由于枚举的值是单例的,在BussinessException中直接传入枚举实例并修改,可能会有并发问题吧?
由于枚举的值是单例的,如果在一个BussinessException传入枚举,再执行setErrMsg修改错误信息。那么在不同线程里所有引用这个枚举的BussinessException中的ErrMsg都会改变。
由于枚举的值是单例的,如果在一个BussinessException传入枚举,再执行setErrMsg修改错误信息。那么在不同线程里所有引用这个枚举的BussinessException中的ErrMsg都会改变。
2019-03-28
@RestController
@RequestMapping("/user")
public class UserController {
@GetMapping("/get")
public String get() {
return EmBusinessError.PARAMETER_VALIDATION_ERROR.setErrMsg("用户id错误")
.getErrMsg();
}
@GetMapping("/getDefaultMsg")
public String getDefaultMsg() {
return EmBusinessError.PARAMETER_VALIDATION_ERROR.getErrMsg();
}
}setErrMsg这个方法是有问题的。
假设第一次调用方法get,返回”用户id错误“消息,第二次调用getDefaultMsg方法期望返回“参数错误”这条消息,由于枚举类是单例的,所以在get修改EmBusinessError.PARAMETER_VALIDATION_ERROR的属性后,getDefaultMsg方法还是返回”用户id错误“消息。
举报