spring默认为单例模式

这两天看到一个bug,记录下。

在获取任务的时候,本来任务不是由这个柜员领取的,但是最后跑到那个柜员下面去了。

查看日志,发现两个任务的领取操作很近,日志是穿插着打的。

后来经人指点,说spring初始化bean默认是单实例模式,也就是说这个类的私有属性被后来的调用给改掉了。导致在领取任务的时候 第一个调用的领任务的类的私有变量就变为第二次调用的任务的。所以领串了。这样第二个调用也会随之报错。

这个bug解决的话两个方法。

1:去掉这个私有变量,直接在方法里面初始化。

2.修改spring 初始化这个类,不要使用单例模式。

<bean id="user" class="..." singleton="false"/> 如果不写,就是默认值true。

原文地址:https://www.cnblogs.com/edenpans/p/4710049.html