写了个全局变量的bug,被同事们打脸
话说栈长前阵子写了一个功能,测试 0 bug 就上线了,上线后也运行好好的,好多天都没有人反馈bug,超爽。。 不出问题还好,出问题就是大问题。。 最近有个客户反馈某些数据混乱问题,看代码死活看不出什么问题,很诡异,再仔细看代码,原来是一个全局变量的问题,导致在并发情况下出现了线程不安全的问题,事后被同事们打脸!!! 慎用全局变量,我在公司一直在强调,没想到这么低级的问题居然发生在自己身上,说起来真的惭愧啊。。 最开始使用的是 Spring 注入对象的方式: @Autowired privateObjectobject; 因为 Spring 默认是单例,所以这样写是没有问题的,后来随着业务的发展,需要多个不同的业务实例,我改成了这种方式: @Setter privateObjectobject; 这个 @Setter 是 Lombok 的注解,用来生成 setters 方法,现在想起来,真是低级啊,同时操作的情况下,这个对象肯定会出现覆盖的情况,从而导致上面说的问题。 写了一个这么低级bug,我也不怕不好意思发出来,大家都谨记一下吧。 另外,我再总结几个慎用全局变量的场景: 1、Sim...
