Spring的Bean的生命周期
Spring的Bean的生命周期
- Spring的Bean的生命周期
Spring的Bean的生命周期
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-cXXjxFwg-1685074401885)(img_9.png)]](https://img-blog.csdnimg.cn/c261aa4e554543588277e476b7bc2a47.png)
Spring的Bean的生命周期包括以下阶段:
- (1)实例化Instantiation
- (2)填充属性Populate properties
- (3)处理Aware接口的回调处理
- (4)BeanPostProcessor的前置处理
- (5)InitializingBean的afterPropertiesSet()方法
- (6)init-method属性指定的初始化方法
- (7)BeanPostProcessor的后置处理
- (8)DisposableBean的destroy()方法
- (9)destroy-method属性指定的初始化方法
bean四个阶段: 实例化、属性填充、初始化、销毁
- 实例化Bean:
对于BeanFactory容器,当客户向容器请求一个尚未初始化的bean时,或初始化bean的时候需要注入另一个尚未初始化的依赖时,容器就会调用createBean进行实例化。
对于ApplicationContext容器,当容器启动结束后,通过获取BeanDefinition对象中的信息,实例化所有的bean。
- 设置对象属性(依赖注入):
实例化后的对象被封装在BeanWrapper对象中,紧接着,Spring根据BeanDefinition中的信息 以及 通过BeanWrapper提供的设置属性的接口完成属性设置与依赖注入。
- 处理Aware接口:
Spring会检测该对象是否实现了xxxAware接口,通过Aware类型的接口,可以让我们拿到Spring容器的一些资源:
①如果这个Bean实现了BeanNameAware接口,会调用它实现的setBeanName(String beanId)方法,传入Bean的名字;
②如果这个Bean实现了BeanClassLoaderAware接口,调用setBeanClassLoader()方法,传入ClassLoader对象的实例。
②如果这个Bean实现了BeanFactoryAware接口,会调用它实现的setBeanFactory()方法,传递的是Spring工厂自身。
③如果这个Bean实现了ApplicationContextAware接口,会调用setApplicationContext(ApplicationContext)方法,传入Spring上下文;
-
BeanPostProcessor前置处理:
如果想对Bean进行一些自定义的前置处理,那么可以让Bean实现了BeanPostProcessor接口,那将会调用postProcessBeforeInitialization(
Object obj, String s)方法。 -
InitializingBean的afterPropertiesSet()方法:
如果Bean实现了InitializingBean接口,执行afeterPropertiesSet()方法。 -
init-method属性指定的初始化方法:
如果Bean在Spring配置文件中配置了 init-method 属性,则会自动调用其配置的初始化方法。 -
BeanPostProcessor后置处理:
如果这个Bean实现了BeanPostProcessor接口,将会调用postProcessAfterInitialization(Object obj, String s)
方法;由于这个方法是在Bean初始化结束时调用的,所以可以被应用于内存或缓存技术;
以上几个步骤完成后,Bean就已经被正确创建了,之后就可以使用这个Bean了。
-
DisposableBean的destroy()方法:
当Bean不再需要时,会经过清理阶段,如果Bean实现了DisposableBean这个接口,会调用其实现的destroy()方法; -
destroy-method属性指定的初始化方法:
最后,如果这个Bean的Spring配置中配置了destroy-method属性,会自动调用其配置的销毁方法。
我的Github地址,欢迎大家加入我的开源项目,或者(在我的主页联系我)加入你们的开源项目,点点Github-Stars。
| \ | 开源项目名称 | 依赖类型 | 版本号 | 描述 |
|---|---|---|---|---|
| 1 | spring-boot-starter-trie | pom | 1.0.0-SNAPSHOT | 特定需求下查询速度远超开源检索工具,innodb下B+树或者ES中倒排索引无法与之比拟. |
| 2 | spring-boot-starter-trie | jar | 1.0.0-M1 | 提供了基于SpringCloud的服务节点,可以通过Nacos注册中心进行服务发现,实现了树的动态扩容与缩容,以及服务的动态上下线。 |
| 3 | Data-Provider | pom | 1.0.0-SNAPSHOT | 提供了多种数据源的查询,以及数据的类型同步,作为一个Jar可以依赖在其他服务上动态的提供数据。 |
相关文章:
Spring的Bean的生命周期
Spring的Bean的生命周期 Spring的Bean的生命周期 Spring的Bean的生命周期 Spring的Bean的生命周期包括以下阶段: (1)实例化Instantiation(2)填充属性Populate properties(3)处理Aware接口的回调…...
在树莓派上搭建WordPress博客网站,并内网穿透发布到公网
✨个人主页:bit me👇 目 录 🐾概述💐安装 PHP🌸安装MySQL数据库🌷安装 Wordpress🍀设置您的 WordPress 数据库🌹设置 MySQL/MariaDB🌻创建 WordPress 数据库 ἳ…...
跨平台C++ Qt数据库管理系统设计与实战:从理论到实践的全面解析
跨平台C Qt数据库管理系统设计与实战:从理论到实践的全面解析 一、引言(Introduction)1.1 数据库管理系统的重要性(Importance of Database Management Systems)1.2 C和Qt在数据库管理系统中的应用(Applica…...
Ubuntu crontab定时任务
1. crontab 相关的命令: 安装:apt-get install cron 启动:service cron start 重启:service cron restart 停止:service cron stop 检查状态:service cron status 查询cron可用的命令:service …...
ChatGPT Prompt Engineering for Developers 大语言模型引导词指导手册
以下内容均整理来自deeplearning.ai的同名课程 Location 课程访问地址 https://learn.deeplearning.ai/chatgpt-prompt-eng 一、Guidelines for Prompting 引导语的编写原则 Prompting Principles 引导语编写原则 Principle 1: Write clear and specific instructions编写清晰…...
【Vue】二:Vue核心处理---模板语法
文章目录 1.模板语法---插值2.模板语法---指令语法2.1v-once2.2 v-bind2.3 v-model2.4 v-on 3.MVVM4.事件回调函数中的this 1.模板语法—插值 {{可以写什么}} (1)在data中声明的变量,函数 (2)常量 (3&…...
windows环境下nginx+ftp服务器搭建简易文件服务器
这里写目录标题 1,前言2,FTP服务器搭建3,nginx安装 1,前言 几种文件服务器的对比 1,直接使用ftp服务器,访问图片路径为 ftp://账户:密码192.168.0.106/31275-105.jpg不采用这种方式,不安全容易…...
【数据结构与算法】图的概述(内含源码)
个人主页:【😊个人主页】 系列专栏:【❤️数据结构与算法】 学习名言:天子重英豪,文章教儿曹。万般皆下品,惟有读书高——《神童诗劝学》 系列文章目录 第一章 ❤️ 学前知识 第二章 ❤️ 单向链表 第三章…...
SAP MM 根据采购订单反查采购申请
如何通过采购订单号查询到其前端的采购申请号。 首先从采购申请的相关报表着手,比如ME5A, 发现它是可以满足需求的。 例如:如下的采购订单, 该订单是由采购申请10003364转过来的。 如果想通过这个采购订单找到对应的采购申请,在…...
C语言程序设计题/C语言计算机二级考前押题版
C语言程序设计题/C语言计算机二级考试押题版 与 数位 和 数 有关 求max与min 任意四个数 运算符和表达式版本 #include <stdio.h> int main( ) {int a,b,c,d;int max,min;printf("please input 4 integers:");scanf("%d%d%d%d", &a, &b, …...
Canonical标签在SEO中重要作用
canonical标签是很多搜索引擎都支持的一个标签,它的作用是标记某一网页的唯一url地址。这样做的目的是保证我们的某一网页在搜索引擎中只有一个唯一的地址。 Canonical标签对于一些入行不久的人来说,可能会有些陌生。但这个标签是很多搜索引擎都支持的标…...
【Linux之进程间通信】06.Linux进程通信 - 共享内存
【Linux之进程间通信】 项目代码获取:https://gitee.com/chenshao777/linux-processes.git (麻烦点个免费的Star哦,您的Star就是我的写作动力!) 06.共享内存 共享内存是Linux进程间的通信方式之一 创建共享内存函数…...
oracle安装
服务端安装(公司中不需要,只安装客户端就行) 1、挂载一个Windows系统 双击vmx文件 启动 2、网络配置 添加一个网络 自己电脑看控制面板是否添加虚拟网卡 查看连接的网络,ip地址不能为1,为1就自己修改,…...
CSS样式的三种引入方式及优先级
说明:网页开发有三种技术,分别是html、css和js,分别对应页面的结构、表现和动作。css样式引入,是指把对页面的渲染作用到html上,有以下三种方式:行内式、内嵌式和外联式。 第一种:行内式&#…...
Linux第二天
上传 scp -r 本地文件路劲 用户名目标主机地址:路径 下载:scp -r 用户名目标主机地址:路径 本地目录 ls -A /root //查看root文件下所有的隐藏文件 命令:ls 选项: -l:查看文件属性 -h:文…...
微服务和领域驱动
一、微服务 1.1 什么是微服务 微服务就是一些协同工作的小而自治的服务。 关键词: 小而自治 -- 小 “小”这个概念,一方面体现在微服务的内聚性上。 内聚性也可以称之为单一职责原则:“把因相同原因而变化的东西聚合到一起,…...
Redis如何做到内存高效利用?过期key删除术解析!
大家好,我是小米,一个热衷于分享技术的小伙伴。今天我要和大家探讨一个关于 Redis 的话题:删除过期key。在使用 Redis 进行数据存储和缓存时,我们经常会遇到过期数据的处理问题。接下来,我将为大家介绍为什么要删除过期…...
EFDC模型教程
详情点击链接:EFDC建模方法及在地表水环境评价、水源地划分、排污口论证 一,软件安装 1.1 EFDC安装 1.2 EFDC-Explorer安装 1.3 Delft3D安装 1.4 Google Earth安装二,EFDC模型 2.1 EFDC模型 2.2 EFDC-DSI模型 2.3 EFDC的…...
URLConnection(三)
文章目录 1. 配置连接2. protected URL url3. protected boolean connected4. protected boolean allowUserInteraction5. protected boolean doInput5. protected boolean doOutput6. protected boolean isModifiedSince7. protected boolean useCaches8. 超时 1. 配置连接 U…...
针对KF状态估计的电力系统虚假数据注入攻击研究(Matlab代码实现)
💥💥💞💞欢迎来到本博客❤️❤️💥💥 🏆博主优势:🌞🌞🌞博客内容尽量做到思维缜密,逻辑清晰,为了方便读者。 ⛳️座右铭&a…...
为什么头部科技公司集体弃用Workday转向Lindy?——基于14家客户迁移数据的自动化人效拐点分析
更多请点击: https://intelliparadigm.com 第一章:Lindy人力资源自动化方案的演进逻辑与战略定位 Lindy人力资源自动化方案并非孤立的技术堆叠,而是根植于企业数字化成熟度跃迁与HR职能价值重构双重驱动下的系统性进化。其演进逻辑呈现清晰的…...
三步轻松搞定B站视频下载:跨平台免费工具BilibiliDown完整指南
三步轻松搞定B站视频下载:跨平台免费工具BilibiliDown完整指南 【免费下载链接】BilibiliDown (GUI-多平台支持) B站 哔哩哔哩 视频下载器。支持稍后再看、收藏夹、UP主视频批量下载|Bilibili Video Downloader 😳 项目地址: https://gitcode.com/gh_m…...
KMS智能激活终极指南:5分钟搞定Windows和Office永久激活
KMS智能激活终极指南:5分钟搞定Windows和Office永久激活 【免费下载链接】KMS_VL_ALL_AIO Smart Activation Script 项目地址: https://gitcode.com/gh_mirrors/km/KMS_VL_ALL_AIO 还在为Windows系统未激活而烦恼吗?是否经常遇到Office提示"…...
PaperXie 期刊论文写作全解析|从选题到成稿,一键适配普通 / 核心 / SCI 期刊
paperxie-免费查重复率aigc检测/开题报告/毕业论文/智能排版/文献综述/期刊论文https://www.paperxie.cn/ai/journalArticleshttps://www.paperxie.cn/ai/journalArticles 一、前言:期刊论文写作的痛点,你中了几个? 在学术圈,期刊…...
如何高效使用COMET翻译评估工具:专业用户实战指南
如何高效使用COMET翻译评估工具:专业用户实战指南 【免费下载链接】COMET A Neural Framework for MT Evaluation 项目地址: https://gitcode.com/gh_mirrors/com/COMET 在机器翻译快速发展的今天,你如何准确评估翻译质量?传统的人工…...
物理学巅峰成就巡礼:从牛顿到量子,探索宇宙与微观世界的革命性突破
1. 项目概述:一次对物理学巅峰成就的巡礼2019年,诺贝尔物理学奖授予了三位天体物理学家——詹姆斯皮布尔斯、米歇尔马约尔和迪迪埃奎洛兹,以表彰他们在物理宇宙学理论以及系外行星发现领域的开创性贡献。这个奖项像一束聚光灯,将公…...
混合基FFT,matlab实现
参考数字信号处理教程第四版(程佩青著)第四章FFT这里直接给出matlab函数,性能不保证最优注意,此函数只能处理混合基fft,即输入信号x的长度不能是素数,不能是2次幂整数function X mixedRadixFFT(x)% multiB…...
Poppins几何字体:如何让拉丁文与天城体在同一个视觉世界里和谐共舞?
Poppins几何字体:如何让拉丁文与天城体在同一个视觉世界里和谐共舞? 【免费下载链接】Poppins Poppins, a Devanagari Latin family for Google Fonts. 项目地址: https://gitcode.com/gh_mirrors/po/Poppins 当你的产品需要同时面向印度用户和全…...
Joy-Con Toolkit:3大核心功能让你的Switch手柄重获新生
Joy-Con Toolkit:3大核心功能让你的Switch手柄重获新生 【免费下载链接】jc_toolkit Joy-Con Toolkit 项目地址: https://gitcode.com/gh_mirrors/jc/jc_toolkit 你是否曾为Switch手柄的摇杆漂移而烦恼?是否想过让千篇一律的手柄颜色变得与众不同…...
周末造AI公司:无代码+AI工作流48小时MVP实战
1. 项目概述:当“周末造AI公司”成为可复现的工程实践你有没有见过这样的场景:周五下班前,三个人在咖啡馆里画了一张白板草图;周六上午用Notion搭好产品框架、下午用Glide连上Airtable跑通用户注册流程;周日下午把Chat…...
