首页 > 其他分享 >spring--Bean的作用域及应用场景

spring--Bean的作用域及应用场景

时间:2024-01-18 14:55:56浏览次数:31  
标签:Web 示例 作用域 spring -- Bean 实例 应用

这六种Spring Bean的作用域适用于不同的应用场景

  1. Singleton: 在Spring IoC容器中仅存在一个Bean实例,Bean以单例方式存在。无论我们是否在配置文件中显式定义,所有的Spring Bean都默认为singleton作用域。

    • 应用场景:当你需要全局共享一个实例时,例如服务类、工具类或者配置类。
    • 示例:数据库连接池、数据仓库。
  2. Prototype:每次当请求一个Bean时,都会创建一个新的实例,即每次调用getBean()时,都会得到一个全新的对象。

    • 应用场景:当每个请求都需要一个新实例时,例如需要保持状态的Bean,或者有可能在并发环境中产生问题的Bean。
    • 示例:数据对象(Data Transfer Objects, DTOs)、请求处理对象。
  3. Request:该作用域针对Web应用程序,每次HTTP请求都会创建一个新的Bean,该Bean仅在当前HTTP request内有效。

    • 应用场景:在Web应用中,每个HTTP请求都需要一个独立的Bean实例,例如用户的跟踪状态或者临时存储用户信息。
    • 示例:用户登录信息、跟踪用户在请求期间的行为。
  4. Session:同样针对Web应用程序,每次HTTP Session都会创建一个新的Bean,该Bean仅在当前HTTP Session内有效。

    • 应用场景:在Web应用中,Bean的生命周期绑定到用户的HTTP Session,适用于用户登录后的会话信息。
    • 示例:购物车、用户偏好设置。
  5. Application:在一个Web应用程序的生命周期内,只创建Bean的一个实例。Bean以全局方式存在于ServletContext级别。

    • 应用场景:在Web应用中,Bean的生命周期与ServletContext相关联,适用于全局的缓存数据或者应用级别的配置。
    • 示例:应用配置、缓存管理器。
  6. Websocket:在WebSocket的生命周期内,只创建Bean的一个实例。

    • 应用场景:在WebSocket通信中,Bean的生命周期与WebSocket会话相关联,适用于需要在WebSocket会话期间保持状态的组件。
    • 示例:WebSocket连接的用户信息、游戏状态。

注意requestsessionapplicationwebsocket 这四种作用域只有在你的应用是一个Web应用时才适用,因为它们依赖于Servlet容器的上下文。如果你的应用不是Web应用,那么你只能使用singletonprototype这两种作用域。

正确选择Bean的作用域对于优化应用性能、管理资源和确保线程安全至关重要。例如,使用singleton作用域可以减少实例化对象的开销,但在多线程环境中可能需要额外的同步措施。而prototype作用域可以提供每个请求独立的Bean实例,从而避免线程安全问题,但可能会增加对象创建的开销。

标签:Web,示例,作用域,spring,--,Bean,实例,应用
From: https://www.cnblogs.com/xylfjk/p/17972494

相关文章

  • 交换机 端口数
    交换机设备的端口数量  交换机设备的端口数量是交换机最直观的衡量因素,通常此参数是针对固定端口交换机而言,常见的标准的固定端口交换机端口数有8、12、16、24、48等几种。而非标准的端口数主要有:4端口,5端口、10端口、12端口、20端口、22端口和32端口等。    固定端口......
  • 教学相关工具
    从超星导出压缩包提取某些类型文件,如.docx、.doc等文件源码删除无用目录,如android源码中的build、.idea、.gradle等目录源码对文件及目录统一命名源码对实验报告统一打分源码教务系统期末成绩导入源码......
  • springboot配置分页插件pageHelper和数据库方言的几种方式
    方式一:启动类配置分页插件(Application.java)1/**2*pageHelper分页插件3*/4@Bean5publicPageHelperByMyselfpageHelper(){6PageHelperByMyselfpageHelper=newPageHelperByMyself();7Propertiesproperties=newPr......
  • 相位调制的BB84协议
    可以通过图1.4中的光学实验装置来理解几率幅的干涉。装置中的分束器(Splitter)为半透半反镜,其特点是对反射光会增加${\frac{\pi}{2} }$相位、对透射光不改变其相位。路径2和路径3完全相等,不会产生相对相位。按照传统意义上对几率的理解,光子从路径1入射,到达第一个分束器(Splitter),......
  • 若依页面刷新 $tabs.refreshPage()
    前言若依封装了$tab对象,其中有个刷新页签的方法。看了下refreshPage()的源码,发现是用router.replace()替换当前位置的。但是当前路由地址前加了/redirect前缀,不知这个有什么作用。查看相关源码,发现:如果不加该前缀,控制台会报错如下:定义了/redirect/:path(.*)公共......
  • npm ERR! code ENOENT npm ERR! syscall open npm ERR! path C:\Users\shuzi\Des
    打开一个新的项目,因为当前项目文件夹下没有npm,"dev":"npmrunstart:dev",所以所以没有展示对应的运行图,如下图: 打开一个新的前端项目,执行npminstall,报错如图:WindowsPowerShell版权所有(C)MicrosoftCorporation。保留所有权利。安装最新的PowerShell,了解新功能和改进......
  • 鸿蒙应用开发者基础认证考试(答案)
    高亮是易错题main_pages.json存放页面page路径配置信息。(正确)1.在stage模型中,下列配置文件属于AppScope文件夹的是?(C)A.main_pages.jsonB.module.json5C.app.json5(build-profile.json5)D.package.json2.module.json5配置文件中,包含了以下哪些信息?(ABD)A.ability的相......
  • Git Clone报错:Permission denied (publickey).
    GitClone报错具体报错如下:Permissiondenied(publickey).fatal:Couldnotreadfromremoterepository.Pleasemakesureyouhavethecorrectaccessrightsandtherepositoryexists.原因在于此电脑的sshpublickey没有放到服务器上。先看下本地是否有以下文件,......
  • 我与计算机
    我与计算机并不算很熟在上大学之前,最开始接触计算机是初中的信息课,那时候中考要考计算机的word啥的,所以学校安排的有相关课程。那时候觉得运行程序那道题好难啊啥也不会,现在想想也就那样吧。后来到了高中,我们又要会考,还要考计算机的基础知识,简直是头大了。那时的我怎么也不会想到......
  • 薅 AWS 羊毛的船新方式,以 ChatBot 为例
    还在担心一年免费服务器到期后该怎么办?(Solo社区 投稿)网上绝大多数薅AWS羊毛的教程都是在教大家如何申请创建一年免费的VPS,太OUT了!就问一个问题,一年到期了那咋办?其实,除了一年免费的VPS外,AWS足足有40多个永久免费的服务,其中就包括的AWS最为出名的Lambda,以及日常开......