Spring本身并没有针对Bean做线程安全的处理,所以:
1.如果Bean是无状态的,那么Bean则是线程安全的
2.如果Bean是有状态的,那么Bean则不是线程安全的
另外,Bean是不是线程安全,跟Bean的作用域没有关系,Bean的作用域只是表示Bean的生命周期范围,对于任何生命周期的Bean都是一个对象,这个对象是不是线程安全的,还是得看这个Bean对象本身。
无状态:表示这个实例没有属性对象,不能保存实数据,是不变的类。比如:controller、service、dao。
有状态:表示实例是有属性的对象,可以保存数据,是线程不安全的,比如:pojo。
Spring框架并未处理Bean的线程安全问题。无状态Bean由于不保存数据,因此在多线程环境下是安全的,例如Controller、Service、DAO。而有状态Bean由于存在可变数据,可能引发线程不安全问题,如POJO。Bean的作用域只决定其生命周期,不影响线程安全。理解这一点对于正确管理和设计Spring应用中的Bean至关重要。
481





