Spring Bean一共有六种作用域,我们可以将它们比作是不同场景下的“服务助手”。
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的生命周期和可见性范围。
标签:WebSocket,作用域,Spring,助手,会话,Bean,实例 From: https://blog.csdn.net/qq_44378083/article/details/145212983