JavaEE Bean作用域与生命周期
创始人
2024-03-05 19:29:14
0

Bean的作用域

        作用域是用来限制程序中变量的可用范围,Bean的作用域是Bean在Spring整个框架中的行为模式。

        默认情况下,Spring应用上下文所有的bean都是以单例的形式创建的,不管给定的一个bean被注入到其他bean 多少次,每次所注入的都是同一个实例。如果一个Bean对象被两个人使用,其中一个人修改了这个Bean对象,那么另一个人拿到的就是修改后的Bean对象,而不是没有被修改的Bean对象。

        在大多数情况下,单例bean是很理想的方案。初始化和垃圾回收对象实例所带来的成本只留给一些小规模任务,在这些任务中,让对象保持无状态并且在应用中反复重用这些对象可能并不合理。使⽤单例模式可以很⼤程度上提⾼性能,所以在 Spring 中 Bean 的作⽤域默认也是 singleton 单例模式。

        但是如果我们不希望出现上述的单例的情况,就可以使用Spring的其他作用域。Bean的作用域有6种:

  • 单例(Singleton):在整个应用中,只创建bean的一个实例。⽆状态的Bean使⽤该作⽤域。⽆状态表示Bean对象的属性状态不需要更新,Spring默认选择该作用域。
  • 原型/多例(Prototype):每次注入或者通过Spring应用上下文获取的时候,都会创建一个新的bean实例。
  • 会话(Session):在Web应用中,为每个会话创建一个bean实例。一次http的session中定义Bean实例。限定SpringMVC中使⽤。
  • 请求(Rquest):在Web应用中,为每个请求创建一个bean实例。每次http请求会创建新的Bean实例。⼀次http的请求和响应的共享Bean,限定SpringMVC中使⽤。
  • 全局(application):Web应⽤的上下⽂信息,限定在SpringMVC中使用。
  • HTTP webSocket(websocket):WebSocket的每次会话中,保存了⼀个Map结构的头信息,⽤来包裹客户端消息头。第⼀ 次初始化后,直到WebSocket结束都是同⼀个Bean。限定Spring WebSocket中使⽤。

        使用@Scope注解来声明Bean的作用域。使⽤枚举设置@Scope(ConfigurableBeanFactory

.SCOPE_PROTOTYPE)就可以设置成多例作用域。

Bean的生命周期

        Bean的生命周期分为以下5个部分:

  1. 实例化Bean,为Bea分配内存空间。
  2. 设置相关的属性,注入Bean和装配Bean。
  3. Bean初始化。
  4. 使用Bean。
  5. 销毁Bean。

        Bean的执行流程:启动 Spring 容器 -> 实例化 Bean(分配内存空间,从⽆到 有) -> Bean 注册到 Spring 中(存操作) -> 将 Bean 装配到需要的类中(取操作)。

相关内容

热门资讯

保存时出现了1个错误,导致这篇... 当保存文章时出现错误时,可以通过以下步骤解决问题:查看错误信息:查看错误提示信息可以帮助我们了解具体...
汇川伺服电机位置控制模式参数配... 1. 基本控制参数设置 1)设置位置控制模式   2)绝对值位置线性模...
不能访问光猫的的管理页面 光猫是现代家庭宽带网络的重要组成部分,它可以提供高速稳定的网络连接。但是,有时候我们会遇到不能访问光...
不一致的条件格式 要解决不一致的条件格式问题,可以按照以下步骤进行:确定条件格式的规则:首先,需要明确条件格式的规则是...
本地主机上的图像未显示 问题描述:在本地主机上显示图像时,图像未能正常显示。解决方法:以下是一些可能的解决方法,具体取决于问...
表格列调整大小出现问题 问题描述:表格列调整大小出现问题,无法正常调整列宽。解决方法:检查表格的布局方式是否正确。确保表格使...
表格中数据未显示 当表格中的数据未显示时,可能是由于以下几个原因导致的:HTML代码问题:检查表格的HTML代码是否正...
Android|无法访问或保存... 这个问题可能是由于权限设置不正确导致的。您需要在应用程序清单文件中添加以下代码来请求适当的权限:此外...
【NI Multisim 14...   目录 序言 一、工具栏 🍊1.“标准”工具栏 🍊 2.视图工具...
银河麒麟V10SP1高级服务器... 银河麒麟高级服务器操作系统简介: 银河麒麟高级服务器操作系统V10是针对企业级关键业务...