[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");
    }
}
相关推荐
维天说1 小时前
CLI-Switch 2026年3月版历史设计:Hook、TTY 隔离与 JSON 状态
java·服务器·json
Zane19942 小时前
并发 vs 并行:别再傻傻分不清了,一文讲透 Java 并发编程的第一课
java·后端
噢,我明白了2 小时前
java中Excel的导入和导出(EasyExcel)
java·开发语言·excel
吠品2 小时前
Zabbix Web界面误报Server未运行的排查与解决
java·服务器·数据库
啊湘2 小时前
天气查询API接口 按月Token鉴权 实时天气 物联网可用 文档齐全
java·后端·struts
Java内核笔记3 小时前
告别十亿美元的错误 : Spring Boot 4 空安全 (JSpecify) 实战
java·spring boot·后端
糖果店的幽灵3 小时前
langgraph的 MessagesState 解读
java·开发语言·人工智能·windows·langgraph
极光代码工作室4 小时前
基于SpringBoot的在线博客系统
java·springboot·web开发·后端开发
我是唐青枫5 小时前
Java Spring Security 实战详解:从登录认证到 JWT 权限控制
java·spring
ihuyigui5 小时前
海外签收通知短信接口
android·java·开发语言·前端·数据库·后端