Spring bean是线程安全的吗?

当提到SpringBean是线程安全的吗?其实意思是bean里面定义的变量是线程安全的,单独的一个bean是没有什么安全不安全的概念的。

其实可以回答是安全,也可以回答是不安全的。下面来看一下Spring注解属性:Scope

@Scope("prototype")

表示每次获得bean的时候都会创建一个新的对象

@Scope("singleton")

表示Spring容器里面的bean,通过Spring容器去获取的时候每次总是同一个实例。

那这就很明显了,用@Scope("prototype")标志的是线程安全的。@Scope("singleton")则是线程不安全的,每次获取的都是同一个实例,里面的变量是共享的。

Scope属性值还可以是request、session、globalSession,但用的不多。

request表示在一次http请求内有效(只适用于web应用)
session表示在一个用户会话内有效(只适用于web应用)
globalSession表示在全局会话内有效(只适用于web应用)

你可能感兴趣的:(spring,安全,java)