Spring:浅谈对SpringBean的认识

news/2024/9/18 15:03:03/ 标签: spring, 后端, Bean, 生命周期, 作用域, 自动装配

Bean_0">一、SpringBean生命周期

在这里插入图片描述
1、实例化bean对象:通过反射的方式进行对象的创建,此时的创建只是在堆空间中申请空间,属性都是默认值。
2、设置对象属性:给对象中的属性进行值的设置工作。
3、检查Aware相关接口并设置相关依赖:如果对象中需要引用容器内部的对象,那么需要调用aware接口的子类方法来进行统一的设置。
4、BeanPostProcessor的前置处理:对生成的bean对象进行前置的处理工作。
5、检查是否是InitializingBean的子类来决定是否调用afterPropertiesSet方法:判断当前bean对象是否设置了InitializingBean接口,然后进行属性的设置等基本工作。
6、检查是否配置有自定义的init-method方法:如果当前bean对象定义了初始化方法,那么在此处调用初始化方法。
7、BeanPostProcessor后置处理:对生成的bean对象进行后置的处理工作。
8、注册必要的Destruction相关回调接口:为了方便对象的销毁,在此处调用注销的回调接口,方便对象进行销毁操作。
9、获取并使用bean对象:通过容器来获取对象并进行使用。
10、是否实现DisposableBean接口:判断是否实现了DisposableBean接口,并调用具体的方法来进行对象的销毁工作。
11、是否配置有自定义的destory方法:如果当前bean对象定义了销毁方法,那么在此处调用销毁方法。

Bean_14">二、SpringBean作用域

1、singleton:使用该属性定义Bean时,IOC容器仅创建一个Bean实例,IOC容器每次返回的是同一个Bean实例。
2、prototype:使用该属性定义Bean时,IOC容器可以创建多个Bean实例,每次返回的都是一个新的实例。
3、request:该属性仅对HTTP请求产生作用,使用该属性定义Bean时,每次HTTP请求都会创建一个新的Bean,适
用于WebApplicationContext环境。
4、session:该属性仅用于HTTP Session,同一个Session共享一个Bean实例。不同Session使用不同的实例。
5、global-session:该属性仅用于HTTP Session,同session作用域不同的是,所有的Session共享一个Bean实例。

Bean_21">三、SpringBean自动装配

Bean自动装配指的是Bean的属性值在进行注入的时候通过某种特定的规则和方式去容器中查找,并设置到具体的对象属性中,主要有五种方式:
1、no:缺省情况下,自动配置是通过“ref”属性手动设定,在项目中最常用。
2、byName:根据属性名称自动装配。如果一个bean的名称和其他bean属性的名称是一样的,将会自装配它。
3、byType:按数据类型自动装配,如果bean的数据类型是用其它bean属性的数据类型,兼容并自动装配它。
4、constructor:在构造函数参数的byType方式。
5、autodetect:如果找到默认的构造函数,使用“自动装配用构造”; 否则,使用“按类型自动装配”。


http://www.ppmy.cn/news/1517152.html

相关文章

C的温故而知新:位操作(C Primer Plus第十五章)

第十五章:位操作 这一章的篇幅不是很长,但既然能单独作为一章来讲的话,应该蛮重要的,但是我貌似没有总结出多少需要注意、加强记忆的东西,可见在JAVA的日常开发过程中基本不太遇见有关位操作的内容,所以我…

Apache Doris 使用 CBO 和 RBO 结合的优化策略

Apache Doris 在查询优化方面通过结合 RBO 和 CBO,实现了对简单和复杂查询的高效优化。RBO 负责处理常量折叠、子查询改写和谓词下推等基础优化操作,而 CBO 则在 Join Reorder 等复杂场景中发挥作用。这种结合策略使得 Apache Doris 能够在面对各种查询场景时,既能保证优化过…

4170条中医综合真题中医真题ACCESS\EXCEL数据库

今天这份数据库与《4820道西#医综合真#题西#医真题ACCESS数据库》结构相同,包含4千多道真题。这个数据库包含3个表,一个是分类表(SECTION_BEAN),一个是题库主表(QUESTION_INFO_BEAN)&#xff0c…

Queues

概述 RabbitMQ 是一个消息中间件: 它接收、存储并转发消息数据。本教程将带你通过一系列步骤来设置和使用 RabbitMQ。 环境准备 1. 安装 RabbitMQ - [下载](https://www.rabbitmq.com/download.html)并安装RabbitMQ服务器。 - 启动RabbitMQ服务器。 - 通过浏览器访问 htt…

全方位解析红鲸音视频会议SDK助力系统功能集成

在数字化转型的浪潮中,企业对于高效沟通与协作的需求日益迫切。随着远程办公、在线教育、在线医疗等场景的兴起,音视频会议功能已成为众多企业平台不可或缺的一部分。然而,对于许多企业而言,如何将这一功能无缝集成到现有系统或平…

只用一个 HTML 元素可以写出多少形状?——不规则图形篇

上一篇章的末尾(伪元素篇),我们送上了气泡框和笑脸两个好玩的案例。这两个案例其实就是使用伪元素实现的不规则图形的两个预热案例。 相信经过这两个案例的预热,聪明的您已经发现,通过适当且合理的拆分,就…

【Android 设备上的所有相关 WiFi 命令和使用方法】

请注意,这些命令的可用性可能会因设备型号和 Android 版本的不同而有所变化。 1. adb shell cmd wifi 命令 1.1 查看 WiFi 状态 命令:adb shell cmd wifi status功能: 查看 WiFi 的当前状态,如是否开启、连接的网络等。示例:adb shell cmd wifi status1.2 执行 WiFi 扫描 命…

王立铭脑科学50讲:34、两性,脑功能有没有性别差异

王立铭脑科学50讲:34、两性,脑功能有没有性别差异 自己的学习笔记。 1、从脑科学角度出发,1在认知能力上,两性在认知能力上,差别是微乎其微的。 有这个一个思想实验,假设刚开始两性有差异,经…

【人工智能 | 机器学习 | 理论篇】决策树(decision tree)

文章目录 1. 基本流程2. 划分选择2.1 信息增益2.2 增益率2.3 基尼系数 3. 剪枝处理3.1 预剪枝3.2 后剪枝 4. 连续与缺失值4.1 连续值处理4.2 缺失值处理 5. 多变量决策树 1. 基本流程 二分类任务决策树流程: 决策树:包含 1个根结点、若干个内部结点、若…

大数据技术之Flume应用案例(2)

目录 监控端口数据官方案例 步骤 1: 准备环境 步骤 2: 配置 Flume Agent 步骤 3: 启动 Flume Agent 步骤 4: 发送数据到 Flume 步骤 5: 查看 HDFS 中的数据 注意事项 示例说明 实时监控单个追加文件案例 需求分析 实现步骤 (1)确保环境变量配…

WMI (Windows Management Instrumentation)类集合

WMI (Windows Management Instrumentation) 是一个强大的系统管理工具,包含大量的类,用于检索和操作系统信息。WMI 类的数量庞大,涵盖从操作系统到硬件设备的各种信息。 WMI 类通常以 Win32_ 或 CIM_ 前缀开头。Win32_ 类主要用于Windows系统…

AI绘画工具 Stable Diffusion【插画转绘】:建筑 | 风景| 人像照片的插画转绘制作教程,照片秒变插画风格图片!

大家好,我是画画的小强 关于Stable Diffusion 的插画转绘,今天给大家分享一种制作方法。我们先看一下效果图。 一. 图片转插画的制作方法 本期教程我们将使用AI绘画工具Stable Diffusion,关于SD的安装和入门使用可以看看我的往期入门教程…

uniapp u--input实现select下拉列表 input点击事件

背景&#xff1a; 技术框架&#xff1a; uniapp框架(vue2语法)uView组件库。 通过form表单实现数据列表的“查询”功能。注意&#xff1a; 1、<u--form>内部嵌套<u-form-item>&#xff0c;<u-form-item>内部嵌套<u--input>表单组件。 2、H5浏览器端&am…

HTTP 414错误问题

问题描述&#xff1a; 在一次前端编辑报表完成&#xff0c;打开审核人选择弹出框的时候&#xff0c;layer直接报414错误。 问题分析&#xff1a; HTTP 414是HTTP协议中的一个状态码&#xff0c;表示请求的URI&#xff08;Uniform Resource Identifier&#xff09;过长&#…

海睿思通过华东江苏大数据交易中心数商认证,提供高质量数据治理服务!

近日&#xff0c;中新赛克海睿思成功通过华东江苏大数据交易中心的数商认证&#xff0c;获得华东江苏大数据交易中心颁发的“数据治理服务商”证书。 华东数交是在实施“国家大数据战略”大背景下&#xff0c;经国家批准的华东地区首个省级特色数据要素交易平台&#xff0c;致力…

美客多卖家如何借助自养号测评提升销量

在美客多这一电商平台上&#xff0c;尽管当前多数卖家尚未充分利用测评技术&#xff0c;但其作为低成本、高回报的推广方式&#xff0c;无疑蕴藏着巨大的市场潜力。面对竞争相对缓和的市场环境及卖家对测评概念的普遍忽视&#xff0c;以下是对测评技术重要性的强调及其实施策略…

Adobe After Effects的插件--------CC Ball Action

CC Ball Action是粒子效果器,其将2D图层变为一个个由3D小球构成的图层。它是AE内置的3D插件。 使用条件 使用该插件的图层需是2D图层。 我们以一张图片素材为例: 给图片图层添加CC Ball Action效果控件,然后新建一个摄像机(利用摄像机旋转、平移、推拉工具,方便在各个角…

Spark MLlib 特征工程系列—特征转换VectorSizeHint

Spark MLlib 特征工程系列—特征转换VectorSizeHint VectorSizeHint 是 Spark 提供的一个特征转换器,用于指定向量列的大小(即维度)。在一些特征转换和建模过程中,要求输入的向量必须有固定的大小。当数据中包含不同大小的向量时,Spark 可能无法自动推断出向量的正确大小…

基于Vue3和Node.js的完整增删改查项目实现教程:从后端封装到前端调用

在 Node.js 中封装一个增删改查&#xff08;CRUD&#xff09;接口&#xff0c;并在 Vue 3 前端调用这些接口。整个过程包括后端 API 的创建和前端的调用。 一、安装 Node.js 和 Express 脚手架 1. 安装 Node.js 首先&#xff0c;你需要安装 Node.js。你可以通过以下步骤进行安…