[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");
    }
}
相关推荐
码路飞2 小时前
GPT-5.3 Instant 终于学会好好说话了,顺手对比了下同天发布的 Gemini 3.1 Flash-Lite
java·javascript
SimonKing2 小时前
OpenCode AI编程助手如何添加Skills,优化项目!
java·后端·程序员
Seven974 小时前
剑指offer-80、⼆叉树中和为某⼀值的路径(二)
java
怒放吧德德15 小时前
Netty 4.2 入门指南:从概念到第一个程序
java·后端·netty
雨中飘荡的记忆17 小时前
大流量下库存扣减的数据库瓶颈:Redis分片缓存解决方案
java·redis·后端
心之语歌19 小时前
基于注解+拦截器的API动态路由实现方案
java·后端
华仔啊20 小时前
Stream 代码越写越难看?JDFrame 让 Java 逻辑回归优雅
java·后端
ray_liang20 小时前
用六边形架构与整洁架构对比是伪命题?
java·架构
用户83071968408220 小时前
spring ai alibaba + nacos +mcp 实现mcp服务负载均衡调用实战
spring boot·spring·mcp
Ray Liang1 天前
用六边形架构与整洁架构对比是伪命题?
java·python·c#·架构设计