[JAVAee]spring-Bean对象的作用域

分类

Bean对象的作用域分成六大类:

  1. singleton:单例作⽤域
  2. prototype:原型作⽤域(多例作⽤域)
  3. request:请求作⽤域
  4. session:回话作⽤域
  5. application:全局作⽤域
  6. websocket:HTTP WebSocket 作⽤域

singleton-单例作用域

描述:

该作用域下的Bean对象在IOC容器下只存在一个实例,哪一个类对其的获取与装配都是对同一个Bean对象操作.

使用场景:

无状态的Bean对象通常使用songleton作为作用域,无状态即表示Bean对象不进行数据的修改.

备注:

是spring中Bean对象的默认作用域.


prototype-多例作用域

描述:

该作用域下的Bean对象在IOC容器下会在每次请求时定义新的实例对象.

使用场景:

有状态的Bean对象使用,即属性需要更新


request-请求作用域

描述:

每次http请求都会定义新的实例对象

使用场景:

一次http请求和响应中共享的Bean对象


session-会话作用域

描述:

在一个http的session中定义一个实例对象

使用场景:

用户会话的共享Bean对象,在记录用户信息的时候可以使用.


application-全局作用域

描述:

在一个http servlet context中,定义一个实例对象

使用场景:

Web应用的上下文,记录一个应用的共享信息.


websocket-HTTP WebSocket 作⽤域

描述:

在一个websocket周期中定义一个实例对象

使用场景:

WebSocket的每次会话中,保存了⼀个Map结构的头信息,将⽤来包裹客户端消息头。第⼀

次初始化后,直到WebSocket结束都是同⼀个Bean

设置作用域

使用@scope注解就可以声明Bean对象的作用域

①可以对方法注解使用

java 复制代码
@Scope("prototype")
@Bean
public UserBean user1(){
    UserBean userBean = new UserBean();
    userBean.name = "haha";
    return userBean;
}

②也可以对类注解使用

java 复制代码
@Scope("prototype")
@Service//添加Service注解
public class UserService {
    private String name;
    public void hello(){
        System.out.println("service-hello");
    }
}
相关推荐
小小猪的春天8 分钟前
Java 手写第一个 MCP Server:Spring AI MCP 半小时跑通
java·人工智能·spring boot·ai编程
find1star9 分钟前
LeetCode 141:环形链表
java·算法·leetcode·链表
今天AI了吗1 小时前
DeepSeek Harness 深度解析:从评测架构到实战落地
java·网络·数据库·人工智能·架构·java-ee
许彰午1 小时前
27-AuthService登录链路
java·低代码·架构
泡海椒1 小时前
JQuick-Curl 性能分析:并发场景下的性能表现与调优,第三方接口调用不只要快写也要稳跑
java·开发语言·okhttp
Rain的Java大神之路2 小时前
JavaWeb开发如何解决跨域问题
java·前端·后端·nginx·web安全·面试·运维开发
自动化监测Learner3 小时前
Navicat Premium 17 中文版安装教程(2026最新版)
java·linux·数据库
那个松鼠很眼熟w3 小时前
4.Spring-Ai入门案例
java·人工智能·spring
计算机毕设定制辅导-无忧学长3 小时前
《基于SpringBoot青年公寓出租管理系统的设计与实现》
java·vue.js·spring boot·青年公寓出租管理系统
泡海椒4 小时前
JQuick-Curl 二次开发:自定义解析器、扩展点开发指南,如何把框架能力真正变成团队资产
java·开发语言·okhttp·maven