Spring:浅谈对SpringBean的认识

news2024/11/15 10:34:46

一、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对象定义了销毁方法,那么在此处调用销毁方法。

二、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实例。

三、SpringBean的自动装配

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

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

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

相关文章

【书生大模型实战营第三期 | 进阶岛第6关-MindSearch 快速部署】

学习心得:MindSearch 快速部署 摘要 本课程是关于如何将MindSearch部署到Github Codespace和Hugging Face Space的详细指南。通过学习本课程,我深入理解了MindSearch的部署流程,包括环境配置、API Key获取、后端和前端的启动,以及…

Unity | 性能标准分析工具图形API简介

目录 一、相关术语 1.物理页 2.PSS内存 3.Reserved Total 二、耗时推荐值 三、内存推荐值 四、分析工具 1.Profiler (1)Profiler各平台对比 (2)构建到目标平台 (3)Frame数量修改 (4…

正则表达式分离文字和数字并且展示整数或者小数

1、完整示例 function formatFrequency(value) {// 匹配整数和浮点数return value.replace(/(\d(\.\d)?)/g, (match) > {const num parseFloat(match);return Number.isInteger(num) ? num : num.toString();});}// 测试用例const test1 "hhh1天3片";const t…

GitHub开源的网盘系统-Cloudreve

Cloudeve 项目地址 特性: ☁️ 支持本机、从机、七牛、阿里云 OSS、腾讯云 COS、又拍云、OneDrive (包括世纪互联版) 、S3兼容协议 作为存储端 📤 上传/下载 支持客户端直传,支持下载限速 💾 可对接 Aria2 离线下载,可…

从“炫技”到“服务”,国产人形机器人“抢滩”未来产业赛道

图为2024世界机器人大会上展示的人形机器人。新华社记者 李欣 摄 正在北京举办的2024世界机器人大会上,27款人形机器人“争奇斗艳”,不仅参展规模创历届之最,还成为展会上当仁不让的“人气王”,几乎每个展台都围满了人。 人形机…

汽车DV与PV测试

技术的快速进步和消费者对高质量汽车的需求不断推动着汽车行业的发展。为了确保每一辆汽车在设计和生产过程中都能达到最高标准,DV(Design Verification,设计验证)和 PV(Production Validation,生产验证&am…

VMware虚拟机IP地址频繁变化的解决方法?测试可用

问题: 在使用vmware时,虚拟机的IP总是变,每次操作都要重新获取一下ip,重新走一遍流程,比较繁琐。 原因: 虚拟机有默认的租用时间,到了租用时间就会更换IP. 解决方式: 打开VMwar…

LLM - GPT(Decoder Only) 类模型的 KV Cache 公式与原理 教程

欢迎关注我的CSDN:https://spike.blog.csdn.net/ 本文地址:https://spike.blog.csdn.net/article/details/141605718 免责声明:本文来源于个人知识与公开资料,仅用于学术交流,欢迎讨论,不支持转载。 在 GPT…

element+plus中导航菜单关于index报错

elementplus中导航菜单关于index报错 官方解释必须为string 修改后正常使用 而当动态插入的时候,需要使用:index,且需要写为: :index“String(index)” index是为dom加的属性(是定值),而:index加的值相当…

Python开发工具:PyCharm

本文是 Python 系列教程第 2 篇,完整系列请查看 Python 专栏。 1 安装 官网下载地址https://www.jetbrains.com.cn/pycharm/,文件比较大(约861MB)请耐心等待 双击exe安装 安装成功后会有一个30天的试用期,激活教程见先…

Level3 — PART 4 机器学习算法 — 决策树

目录 引言 信息量 信息熵 案例 ID3 属性选择—信息增益 决策树生成 Python实现ID3 C4.5 属性选择—信息增益率 连续型属性 缺失值 剪枝 CART 分类树属性选择—基尼系数 回归树属性选择—方差 剪枝 Python实现CART CHAID GBRT 决策树对比 模拟题 CDA L…

GDB基础指令分类与汇总

前言 在图形化界面中,我们进行调试一般而言比较方便,举例如下: 不过有时候,我们在Linux下没有这样的图形界面,这时可以使用GDB调试器来帮我们完成上面的工作。 GDB基础指令分类与汇总 类别指令含义举例基本使用gcc pro…

源代码防泄密的途径有很多种,如何保护源代码呢

随着各行各业业务数据信息化发展,各类产品研发及设计等行业,都有关乎自身发展的核心数据,包括业务数据、代码数据、机密文档、用户数据等敏感信息,这些信息数据有以下共性: — 属于核心机密资料,万一泄密会…

【实践经验】端口被占用问题:listen tcp:bind:only one usage of each socket address

文章目录 一. 问题描述二. 分析1. 适用错误 三. 解决方法1. 打开控制台2. 查看端口的使用情况2.1 不知道端口号——查看所有运行的端口2.2 知道端口号 3. 查看使用进程的程序4. 杀死进程5. 验证端口是否释放 一. 问题描述 goland启动项目后报错:“listen tcp:bind:…

四、监控搭建-Prometheus-采集端批量部署

四、监控搭建-Prometheus-采集端批量部署 1、背景2、目标3、传承4、操作4.1、准备部署工具4.2、编制部署脚本4.3、服务端添加客户端 1、背景 在前三篇中我们搭建了Prometheus平台,采集端部署和配合图形化grafana部署,将Linux主机进行监控。基本完成了一…

day41.动态规划

一.动态规划 121.买卖股票的最佳时机I 思路: dp[i][1] 表示第i天不持有股票所得最多现金 dp[i][0] 表示第i天持有股票所得最多现金 相信有人和我有一样的疑惑,为什么dp【i】【0】的转移是dp【i-1】【0】,-price【i】,因为题目规定了只能进行一次买卖&…

Linux信号处理机制基础

什么是信号 信号在最早的UNIX系统中即被引入,已有30多年的历史,但只有很小的变化。信号是提供异步事件处理机制的软件中断。进程之间可以相互发送信号,这使信号成为一种进程间通信(Inter-ProcessCommunication,lPC)的基本手段 信号的名称与…

水控器数码管驱动方案

目录 方案1 方案2 总结 方案1 数码管驱动电路选用2片74HC595和外围电阻实现,如图1所示。74HC595的封装为S0-16(窄体),芯片价格0.42,整个LED驱动电路成本约0.9元(不包含数码管)。 图1、74HC595驱动电路 方案2 为减少PCB板密度,数…

x86中部署docker环境

使用dockerhub搜索Ubuntu x86 1、拉取镜像 docker pull balenalib/odyssey-x86-ubuntu 2、查看镜像 docker images 3、保存镜像 docker save -o ubuntuX86.tar ubuntu/x86:v1 4、加载镜像 docker load -i ubuntuX86.tar 5、创建并运行容器 docker run -itd balenalib/odyssey-…

灵办AI搜索引擎和文档总结工具

前言—— 在信息爆炸的时代,如何高效地获取和处理知识成为了每个人面临的挑战。随着人工智能技术的迅猛发展,本文将深入探讨这一创新工具的功能与优势,以及如何在日常生活和工作中充分利用它,开启智能化的信息获取新篇章。 点击…