JavaEE Bean作用域与生命周期

news2024/11/25 16:53:04

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 装配到需要的类中(取操作)。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/50608.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Spring 异步@Async注解用法 Spring @Async注解用法总结 Spring @Async基本用法示例

Spring 异步Async注解用法 Spring Async注解用法总结 Spring Async基本用法示例 一、概述 在日常开发的工作中,经常会使用异步进行开发。Spring 提供一个简单的注解 Async ,即可实现异步的开发,无需创建线程池,简单明了。 本文将整…

盘点 GitHub 上的神级指南

盘点 GitHub 上那些神级指南!本次盘点都是 GitHub 上标星 10K 的开源指南。都是由中国的开发者开源,除了技术、教程类的指南,还有一些花里胡哨的东西。本期推荐开源项目目录:1. 计算机自学指南2. 大数据入门指南3. 程序员延寿指南…

[附源码]计算机毕业设计springboot企业人事管理系统

项目运行 环境配置: Jdk1.8 Tomcat7.0 Mysql HBuilderX(Webstorm也行) Eclispe(IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持)。 项目技术: SSM mybatis Maven Vue 等等组成,B/S模式 M…

MASA Framework 事件总线 - 跨进程事件总线

概述 跨进程事件总线允许发布和订阅跨服务传输的消息, 服务的发布与订阅不在同一个进程中 在Masa Framework中, 跨进程总线事件提供了一个可以被开箱即用的程序 IntegrationEvents: 提供了发件箱模式 IntegrationEvents.Dapr: 借助Dapr实现了消息的发布EventLogs.EFCore: 基…

企业想要做好数据分析,可以试试瓴羊Quick BI

企业的数字化发展已经成为了一个发展的方向,可是各个企业如何才可以实现数字化发展确实成为了难题。从很多企业的内部发展中来讲,每一个部分的数据化的分析都已经成为了行业的难点,如何做好这些分析工作确实是很关键的内容。 而在具体数字化…

艾美捷细胞低密度脂肪酸(LDL)摄取试剂盒的功能应用

胆固醇是一种重要的细胞成分,维持胆固醇稳态对正常生理功能至关重要。血浆胆固醇水平升高与各种病理状况有关,最明显的是冠心病,高胆固醇水平导致动脉泡沫细胞形成和斑块堆积,可能导致心脏病发作或中风。细胞胆固醇代谢和血浆胆固…

教育在线学习系统,教育培训都能用,支持多个终端

随着居家隔离不断反复,在线教育也成为了居家学习的必备工具之一。常用的方式就是在线教育培训。教育在线学习系统为教育行业的发展提供了有效工具,推动着教育行业逐步转型到线上线下的教育模式。学生在家通过手机就能随时随地学习,非常的方便…

基于矩阵分解模型的协同过滤理论概述(涉及到SVD,SVD++,TimeSVD++)

前言 本篇文章是对博客:从item-base到svd再到rbm,多种Collaborative Filtering(协同过滤算法)从原理到实现的补全,感谢该作者的分享 本文补全的内容为: SVD中 yjy_jyj​的实际含义理解,以及对应的梯度下降公式TimeS…

[附源码]JAVA毕业设计高校校园社交网络(系统+LW)

[附源码]JAVA毕业设计高校校园社交网络(系统LW) 目运行 环境项配置: Jdk1.8 Tomcat8.5 Mysql HBuilderX(Webstorm也行) Eclispe(IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持)。 项目技术…

高通导航器软件开发包使用指南(15)

高通导航器软件开发包使用指南(15)9 基本参数调整9.1关键调谐参数9.2调整过程9.2.1传感器方向9.2.2电子速度控制器(ESC)9.2.3螺旋桨和电机特性9.2.4指定车辆总质量的参数9.2.5最小和最大推力命令9.2.6推进器配置9.2.7姿态控制增益…

魔兽世界服务端源码各个重要文件详细情况说明开服一条龙

魔兽服务端开服源文件各文件翻译 很多文件在服务器中我们知道是跟什么有关,但就是不知道其作用是什么。就算我们知道在这些地方中的文件都是有着不小的作用。但是由于不知道各个文件代表的是什么意思所以在面对这些文件的时候都会有无从下手的感觉,所以…

入耳式无线蓝牙耳机哪款好?无线入耳蓝牙耳机推荐

随着近几年蓝牙耳机的快速发展,使用蓝牙耳机的人也越来越多,可供人们选择的蓝牙耳机也有很多。那么,在现如今的蓝牙耳机市场中,哪款无线蓝牙耳机好?下面,我来给大家推荐几款无线入耳蓝牙耳机,可…

HTML+CSS+JavaScript仿京东购物网站制作 html静态网页设计制作 dw静态网页成品模板素材网页 web前端网页设计与制作 div静态网页设计

HTML实例网页代码, 本实例适合于初学HTML的同学。该实例里面有设置了css的样式设置,有div的样式格局,这个实例比较全面,有助于同学的学习,本文将介绍如何通过从头开始设计个人网站并将其转换为代码的过程来实践设计。 ⚽精彩专栏推荐&#x1…

JavaWeb中的VUE快速入门

目录 概述: Vue的安装 Vue的常用指令 通过VUE高效提交表单调用接口请求 Vue的生命周期 概述: Vue是一套前端框架,免除原生JavaScript中的DOM操作,简化书写。Vue为当前的国内前端主流框架,基于MVVM(Model-View-ViewModel&…

kubernetes之pod详解

pod详解 文章目录pod详解Pod生命周期一、创建和终止二、 初始化容器Pod调度定向调度亲和性调度污点和容忍Pod生命周期 我们一般将pod对象从创建至终的这段时间范围称为pod的生命周期,它主要包含下面的过程: pod创建过程运行初始化容器(init …

ByteX-shrink_r源码解析

背景 为什么要对R文件内联处理? 这里首先说一下Android R文件的产生,对于Android开发者我们都知道,当我们要使用要使用一些布局文件,drawable等其他资源时,可以直接用 R.id. R.drawble.等直接使用,而这个…

Redis 内存管理

前言 Redis 的同学应该都知道,它基于键值对(key-value)的内存数据库,所有数据存放在内存中,内存在 Redis 中扮演一个核心角色,所有的操作都是围绕它进行。我们在实际维护过程中经常会被问到如下问题&#x…

详解设计模式:组合模式

组合模式(Composite Pattern),又叫部分整体模式,是 GoF 的 23 种设计模式中的一种结构型设计模式。 组合模式 是用于把一组相似的对象当作一个单一的对象。组合模式依据树形结构来组合对象,用来表示部分以及整体层次。…

Codeforces Round #726 (Div. 2) E1. Erase and Extend (Easy Version)

翻译: 这是这个问题的简单版本。唯一的区别是𝑛和𝑘上的约束。只有当所有版本的问题都解决了,你才能进行hack。 你有一个字符串𝑠,你可以对它做两种类型的操作: 删除字符串的最后一个字符。 复制字符串:…

UI 智能化的原理和未来

本文将从 GUI 中用户体验的构建开始,用高质量、可调控、交互体验创新三个部分,分别介绍如何从传统 UI 一步步迈向 UI 智能化。最后,用如何实现 UI 智能化的一些思考收尾。 本文仅代表作者个人观点。前言:「UI 智能化才是用户体验的…