Spring中的Bean默认是单例模式的,框架并没有对bean进行多线程的封装。所以单例bean是线程不安全的。
如果Bean是有状态的(有状态即有数据存储功能),则需要我们自己来保证线程安全。
最简单的方法即改变Bean作用域,将单例变为原型,即'singleton'改为'protopyte',这样每次请求的Bean都是重新new一个Bean。
或用ThreadLocal来包装变量,将变量变为线程私有的。
或使用synchronized修饰变量来实现线程同步。
Spring中的Bean默认是单例模式的,框架并没有对bean进行多线程的封装。所以单例bean是线程不安全的。
如果Bean是有状态的(有状态即有数据存储功能),则需要我们自己来保证线程安全。
最简单的方法即改变Bean作用域,将单例变为原型,即'singleton'改为'protopyte',这样每次请求的Bean都是重新new一个Bean。
或用ThreadLocal来包装变量,将变量变为线程私有的。
或使用synchronized修饰变量来实现线程同步。