Spring中bean的作用域有哪些?它们的区别是什么?

举报
赵KK日常技术记录 发表于 2023/06/30 18:24:16 2023/06/30
【摘要】 Spring中bean的作用域有哪些?它们的区别是什么?在Spring框架中,bean的作用域是指bean在容器中的生命周期。了解bean的作用域有助于我们更好地管理bean的生命周期,以便在需要时获取或销毁bean。本文将介绍Spring中常见的bean作用域及其区别。 单例(Singleton)作用域单例作用域是Spring中最常用的作用域。当一个bean被定义为单例时,容器会在整个应...

Spring中bean的作用域有哪些?它们的区别是什么?

在Spring框架中,bean的作用域是指bean在容器中的生命周期。了解bean的作用域有助于我们更好地管理bean的生命周期,以便在需要时获取或销毁bean。本文将介绍Spring中常见的bean作用域及其区别。

单例(Singleton)作用域

单例作用域是Spring中最常用的作用域。当一个bean被定义为单例时,容器会在整个应用程序中创建一个唯一的实例。这意味着在整个应用程序中,你都可以访问这个唯一的实例。单例作用域的bean具有以下特点:

  1. 只创建一个实例。
  2. 所有请求都会返回同一个实例。
  3. 容器会缓存已创建的实例,以便在需要时重复使用。

@Configuration
public class AppConfig {

    @Bean(scope = Singleton)
    public MyService myService() {
        return new MyService();
    }
}

原型(Prototype)作用域

原型作用域允许容器为每个请求创建一个新的bean实例。这意味着每次请求都会返回一个新的实例,而不是复用同一个实例。原型作用域的bean具有以下特点:

  1. 每次请求都会创建一个新的实例。
  2. 每个请求都会访问到不同的实例。
  3. 容器不会缓存已创建的实例。

@Configuration
public class AppConfig {

    @Bean(scope = Prototype)
    public MyService myService() {
        return new MyService();
    }
}

请求(Request)作用域

请求作用域允许容器为每个HTTP请求创建一个新的bean实例。这意味着在一个HTTP请求的生命周期内,可以访问到多个不同的实例。请求作用域的bean具有以下特点:

  1. 每个HTTP请求都会创建一个新的实例。
  2. 每个HTTP请求都会访问到不同的实例。
  3. 容器不会缓存已创建的实例。

@Configuration
public class AppConfig {

    @Bean(scope = Request)
    public MyService myService() {
        return new MyService();
    }
}

WebSocket作用域和Session作用域(仅适用于WebSocket)

WebSocket作用域和Session作用域分别用于处理WebSocket连接和HTTP会话。这些作用域允许容器为每个WebSocket连接或HTTP会话创建一个新的bean实例。这意味着在一个WebSocket连接或HTTP会话的生命周期内,可以访问到多个不同的实例。WebSocket作用域和Session作用域的bean具有以下特点:

  1. 每个WebSocket连接或HTTP会话都会创建一个新的实例。
  2. 每个WebSocket连接或HTTP会话都会访问到不同的实例。
【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。