Spring 开发必备:深入解析 Spring Bean 的六大作用域

Spring Bean一共有六种作用域,我们可以将它们比作是不同场景下的“服务助手”。

Spring 开发必备:深入解析 Spring Bean 的六大作用域_第1张图片

1. 单例作用域(Singleton):

• 就像餐厅里只有一个“领班助手”,无论顾客多少次呼唤,来的都是同一位助手

• 在Spring容器中,单例作用域的Bean也只会有一个实例,无论在哪里获取,都是同一个对象。

• 适用于无状态的Bean,如数据库连接池等。

2. 原型作用域(Prototype):

• 就像餐厅里每次顾客呼唤都会来一位“新服务员助手”

• 每次从Spring容器中获取原型作用域的Bean时,都会创建一个新的实例。

• 适用于有状态的Bean,如用户会话信息等。

3. 请求作用域(Request):

• 就像餐厅里每次有新的顾客点单,都会有一位“点单助手”来服务。

• 在Web应用中,每次HTTP请求都会创建一个新的Bean实例,该实例仅在当前请求内有效。

• 适用于与当前HTTP请求紧密相关的Bean。

4. 会话作用域(Session):

• 就像餐厅里每位顾客都有一个专属的服务员助手”,从顾客进门到离开,都由这位助手服务。

• 在Web应用中,每个HTTP会话都会有一个独立的Bean实例,该实例在当前会话内有效。

• 适用于与当前浏览器会话紧密相关的Bean,如用户购物车等。

5. 全局作用域(Application):

• 就像餐厅里有一个“大堂经理助手”,负责整个餐厅的协调和服务

• 在Web应用中,全局作用域的Bean在整个Web应用范围内共享,即应用的所有会话和请求之间共享。

• 适用于全局配置、共享服务或全应用级别的数据。

6. WebSocket作用域:

• 就像餐厅里有一个“外卖助手”,专门负责处理外卖订单。

• 在WebSocket应用中,每次WebSocket会话都会有一个独立的Bean实例,该实例在当前WebSocket会话内有效。

• 适用于WebSocket的每次会话中需要保存的信息。

这六种作用域各有特点,开发者可以根据实际需求选择合适的作用域来管理Bean的生命周期和可见性范围。

你可能感兴趣的:(spring,后端,微服务,spring,cloud,spring,boot)