Spring Bean的作用域如何设置,常见的取值有哪些?

简介: Spring Bean作用域可通过@Scope注解设置,常见有singleton(默认,单例)、prototype(每次创建新实例)、request(每请求一个实例)、session(每会话一个实例)。singleton在容器启动时初始化,可加@Lazy延迟;prototype则每次使用时创建。多数场景使用默认单例模式。

Spring Bean的作用域可以通过 @Scope 注解来设置。常见的取值如下:
·singleton:这种bean范围是默认的,这种范围确保不管接受到多少个请求,每个容器中同一个名称的bean只有一个实例,也就是单例的。
·prototype:这种范围,表示非单例的。也就是说每一次用到的bean都是一个新的。·request:同一个请求,使用的是同一个bean。会为每一个来自客户端的请求都创建一个实例,在请求完成以后, bean会失效并被垃圾回收器回收。
session:与request 请求范围类似,确保每个session会话范围内,是同一个实例,在session过期后,bean会随之失效。
虽然,bean作用域可以设置这些值,但是在项目开发中,绝大部分的bean都不会添加这个 @Scope 注解,也就是说默认都是用的是单例的bean。
Spring容器的bean什么时候初始化的?
嗯~这个得分情况来看哈。
如果是单例的bean,默认是Spring容器启动的时候,就完成bean的初始化操作,那这是默认情况,我们可以通过 @Lazy 注解来延迟bean的初始化,延迟到第一次使用的时候.而如果是非单例的bean(也就是prototype),则是在每次使用这个bean的时候,都会重新实例化一个新的bean.

相关文章
|
5月前
|
安全 Java API
Spring Boot 4 升级实战:从3.x到4.0的分步升级保姆级指南
Spring Boot 4.0于2025年11月发布,基于Spring Framework 7.0,实现模块化(47个轻量自动配置)、JSpecify空安全校验、原生API版本控制等重大升级。镜像减19%、启动快33%,迁移平滑,3.5.x支持至2026年11月。(239字)
5568 1
|
负载均衡 Java Nacos
Spring Cloud五大组件
Spring Cloud五大组件
|
5月前
|
数据采集 安全 算法
Python列表排序:用key参数掌控排序规则
Python列表排序常遇混合类型报错或规则受限,`key`参数是破局关键:它通过自定义函数返回比较值,实现按长度、大小写、字典键、多条件、对象属性等灵活排序,兼容`sort()`与`sorted()`,兼顾效率与可读性。(239字)
440 13
|
7月前
|
存储 算法 Java
6、JVM 虚拟机
JVM堆内存布局因垃圾回收器而异:传统GC将堆分为老年代和年轻代(Eden、S0、S1),G1则划分为多个Region,可动态充当Eden、Survivor、老年代或巨型对象区。常用垃圾回收算法有标记-清除(快但碎片化)、标记-整理(无碎片,较慢)和标记-复制(无碎片,适合存活对象少的场景)。
|
7月前
|
Java Maven Spring
SpringBoot中如何自定义starter
自定义Spring Boot Starter通常包含两个模块:starter负责依赖管理,autoconfigure实现自动配置。前者引入后者,并通过@Configuration和@Conditional定义配置类,在spring.factories或SpringAutoConfiguration.imports中注册,实现按需自动装配,便于多项目复用。
|
7月前
|
Java Spring 容器
Spring Boot配置的优先级?
SpringBoot项目支持多种配置方式,主要包括配置文件(application.properties、.yml、.yaml)和外部配置(如系统属性、命令行参数)。优先级由高到低为:命令行参数 > 系统属性 > .properties > .yml > .yaml。自动配置核心是@SpringBootApplication中的@EnableAutoConfiguration,通过@Import导入配置选择器,加载META-INF/spring.factories中定义的自动配置类,并结合@Conditional条件注解按需注入Bean。
|
开发框架 Java 开发者
Spring Boot中的自动装配原理
Spring Boot中的自动装配原理
3904 1
四大银行虚拟仿真app,银行卡p图软件,银行转账截图生成器【jar实现仅供娱乐用途】
这是一款增强版银行系统程序,包含完整账户管理、交易记录、转账及账户流水查询功能。代码采用Java编写,通过`BankSystem`类实现账户创建与管理。
|
存储 对象存储
【阿里云OSS】You have no right to access this object because of bucket acl.
【阿里云OSS】You have no right to access this object because of bucket acl.
21978 1
【阿里云OSS】You have no right to access this object because of bucket acl.
|
设计模式 XML Java
Spring的生命周期及Spring Bean单例和多例---超详细教学
Spring的生命周期及Spring Bean单例和多例---超详细教学
1510 0

热门文章

最新文章