由于枚举的值是单例的,在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错误“消息。
举报