Bean 的作用域有哪些?
所谓的作用域,其实就是说这个东西在哪个范围内可以被使用 , 如我们定义类的成员变量的时候使用的public,private等这些也是作用域的概念
Spring的Bean的作用域, 描述的就是这个Bean在哪个范围内可以被使用. 不同的作用域决定了Bean的创建, 管理和销毁的方式
常见的作用域有Singleton , Prototype , Request , Session , Applciation这5种. 我们在代码中,可以在定义一个Bean的时候,通过@Scope注解来指定它的作用域
@Service
@Scope("prototype")
public class Service() {
}
-
单例(Singleton) :
-
默认作用域
-
对于每个Spring IOC容器,只创建一个Bean实例
-
适用于全局共享的状态
-
-
原型(Prototype) :
-
每次请求都会创建一个新的Bean实例
-
适用于所有状态都是非共享的情况
-
-
请求(Request) :
-
仅仅在Web应用程序中有效
-
每个HTTP请求都会创建一个新的Bean实例
-
用于请求级别的数据存储和处理
-
-
会话(Session) :
-
仅仅在Web应用程序中有效
-
每个HTTP会话都会创建一个新的Bean实例
-
适用于会话级别的数据存储和处理
-
-
应用(Application) :
-
仅仅在Web应用程序中有效
-
在ServletContext在生命周期内 , 只创建一个Bean实例
-
适用于全应用程序级别的共享数据
-
-
Websocket :
-
仅仅在Web应用程序中有效
-
在WebSocket的生命周期内,只创建一个Bean实例
-
适用于webSocket级别的共享数据
-