JavaEE——Bean的生命周期

news2024/11/16 19:48:55

目录

1、实例化Bean

2、设置Bean的属性

3、初始化Bean

(1)、执行通知

(2)、初始化的前置方法

(3)、初始化方法

(4)、执行自定义方法

(5)、初始化的后置方法

4、使用Bean

5、销毁Bean

(1)、DestructionAwareBeanPostProcessor接口

(2)、DisposableBean接口

(3)、自定义方法


1、实例化Bean

实例化Bean就是为其分配内存空间。当客户端向容器请求一个尚未初始化的bean时,容器就会调用doCreateBean()方法进行实例化。

2、设置Bean的属性

当Bean的实例创建完成后就会对其进行属性设置,也就是依赖注入,将依赖的Bean复制到当前类的属性上。

3、初始化Bean

实例化和属性设置是 Java 级别的系统"事件",操作过程不可人工干预和修改的。而初始化则是给开发者提供的,可以在实例化之后、类加载完成之前进行自定义"事件"处理。

(1)、执行通知

执行各种Aware通知的方法:BeanNameAware、BeanFactoryAware、ApplicationContextAware等接口方法。通过这些接口可以让我们拿到BeanName、BeanFactory等资源。

(2)、初始化的前置方法

执行BeanPostProcessor的初始化前置方法postProcessBeforelnitialization(),对Bean进行一些自定义的前置处理。

(3)、初始化方法

依赖注入操作之后执行@PostConstruct的初始化方法。

(4)、执行自定义方法

如果有指定init-method()方法,就执行用户自定义的初始化方法

(5)、初始化的后置方法

执行BeanPostProcessor的初始化后置方法

4、使用Bean

初始化完成就表示Bean创建成功,之后就可以使用这个Bean。当该Bean不再需要时,就进行销毁操作。

5、销毁Bean

销毁Bean对象时执行@PreDestroy的销毁方法

(1)、DestructionAwareBeanPostProcessor接口

判断Bean是否实现DestructionAwareBeanPostProcessor接口,如果实现就执行DestructionAwareBeanPostProcessor后置处理器的销毁回调方法。

(2)、DisposableBean接口

判断Bean是否实现DisposableBean接口,如果实现就调用其实现的destroy()方法

(3)、自定义方法

判断这个Bean是否配置自定义的销毁方法,如果有就调用其配置的销毁方法。

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

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

相关文章

js读取接口返回的最快的那一个

promise.race 顾名思义,Promse.race就是赛跑的意思,意思就是说,Promise.race([p1, p2, p3])里面哪个结果获得的快,就返回那个结果,不管结果本身是成功状态还是失败状态。 Promise.race([this.$axios.get("api/on…

UiPath-TTS

UiPath-Text to Speech既TTS应用 缘起原理法一 - Invoke Method法二 - Invoke Code 总结 缘起 不知道大家有没有使用过Excel的Read Cell功能或者智能音箱,实用性因场景而异,但是很好玩。回到RPA应用中,大家想象一下,如果你给自己…

STM32的CAN外设简介

目录 STM32的CAN外设简介 CAN框图剖析 CAN控制内核 工作模式 位时序及波特率 CAN发送邮箱 CAN接收FIFO 验收筛选器(重点) 整体控制逻辑 STM32的CAN外设简介 STM32的芯片中具有bxCAN控制器 (Basic Extended CAN 基本扩展CAN外设),它支…

executor.CoarseGrainedExecutorBackend: RECEIVED SIGNAL TERM

Bug现象 spark程序运行正常,但是查看web ui的时候如下图所示: 查看executor logs发现: ERROR executor.CoarseGrainedExecutorBackend: RECEIVED SIGNAL TERM原因分析 首先程序能够正常运行,只是发现某些executor状态为Dead了,说明该executor被移除了,至于为什么会被…

代码随想录算法训练营第二天| 977

977. 有序数组的平方y 思路,原数组是有序的,但是因为负数平方后可能变无序了,因此利用双指针遍历原数组,比较 nums[left]*nums[left]和nums[right]*nums[right]谁更大,然后对新数组赋值 class Solution {public int…

爬虫003_pycharm的安装以及使用_以及python脚本模版设置---python工作笔记021

这里我们用ide,pycharm来编码,看一看如何下载 这里我们下载这个社区办,这个是免费的,个人版是收费的 然后勾选以后 安装以后我们来创建一个项目 这里可以选择python的解释器,选择右边的... 这里我们找到我们自己安装的python解释器

SpringBoot——数据层三组件之间的关系

简单介绍 在之前的文章中,我们介绍了一下SpringBoot中内置的几种数据层的解决方案,在数据层由三部分组成,分别是数据库,持久化技术以及数据源,但是我今天写着写着,突然就想不起来这三部分到底是干什么的了…

助你丝滑过度到 Vue3 生命自定义hooktoRef ②⑥

作者 : SYFStrive 博客首页 : HomePage 📜: VUE3~TS 📌:个人社区(欢迎大佬们加入) 👉:社区链接🔗 📌:觉得文章不错可以点点关注 👉…

TCP状态转换图

TCP状态转换图 了解TCP状态转换图可以帮助开发人员查找问题. 说明: 上图中粗线表示主动方, 虚线表示被动方, 细线部分表示一些特殊情况, 了解即可, 不必深入研究. 对于建立连接的过程客户端属于主动方, 服务端属于被动接受方(图的上半部分) 而对于关闭(图的下半部分), 服务端…

JVM内存的变化

我举得,从空间的角度去理解java的运行,能更深刻的帮助我们学习后面“面向对象”的知识。因此,单独拿出一章,来解释内存的变化。以程序为实例进行判断。 需要一点JVM运行时的内存状态知识点基础。 参考博客: 这种是不…

ubuntu20.04 安装 Qt5.15

目录 安装前工作 选择安装QT的哪个版本 安装时候选择哪些组件 安装Qt5.15 在线安装 我选择的组件 源码包安装 测试 安装前工作 ubuntu20.04.3安装Qt6.22操作步骤_ubuntu安装qt6_sonicss的博客-CSDN博客 # 安装g、gcc编译器 sudo apt-get install build-essential 安装l…

leetcode 455. 分发饼干

2023.7.27 今天起福州要刮台风了,不过还是在宿舍坚持每日一题。 今天开始刷的系列属于贪心算法系列。本题是贪心算法的一个入门题。 贪心算法总体思路就是先找局部最优,在一步步的找出全局最优。 本题很明显全局最优就是 需要尽可能多投喂更多的孩子。…

「双指针技巧解决一些数组问题」

文章目录 0 分类1 快慢指针刷题1.1 删除有序数组中的重复项题解Code结果 1.2 删除排序链表中的重复元素题解Code结果 1.3 移除元素题解Code结果 1.4 移动0题解Code 2 左右指针刷题2.1 二分查找2.2 两数之和 II - 输入有序数组题解Code结果 2.3 反转字符串题解Code结果 2.4 最长…

品牌渠道管理的逻辑

无规矩不成方圆,规则确定了,接下来就是推行这个规则并且执行落地就可以,所以明确问题制定规则就非常重要。这个原则也适用于品牌渠道管理工作,品牌面对经销商低价乱价等问题时,如果仅用打击一种方式去管理,…

Component template should contain exactly one root element

在vue中报错: Component template should contain exactly one root element. If you are using v-if on multiple elements, use v-else-if to chain them instead报错的大致意思是:组件的模板应该只能包含一个根元素,也就是是说作为元素的直…

科技项目验收测试:验证软件产品功能与性能的有效手段

科技项目验收测试是验证软件产品功能与性能的重要手段,在项目开发中起到了至关重要的作用。本文将从产品质量、需求验证、性能测试等方面,探讨科技项目验收测试的有效手段。 1、产品质量保证是验收测试的核心 科技项目验收测试的核心目标是验证软件产品…

DFS()

DFS之连通性模型 dfs 与 bfs都能判断连通性 而且bfs可以得出最短距离 而dfs不可以 dfs 代码比较简洁 迷宫 一天Extense在森林里探险的时候不小心走入了一个迷宫,迷宫可以看成是由 n∗nn∗n 的格点组成,每个格点只有2种状态,.和#&#xff0…

【小尘送书-第三期】Python机器学习:基于PyTorch和Scikit-Learn 》

大家好,我是小尘,欢迎关注,一起交流学习!欢迎大家在CSDN后台私信我!一起讨论学习,讨论如何找到满意的实习! 本文目录 一、前言二、作者简介三、内容简介四、抽奖方式 一、前言 近年来&#xff0…

Vue-resource 实现 get, post请求

Vue-resource是Vue高度集成的第三方包&#xff0c;能很方便的发送请求。 注意Vue-resource依赖于Vue&#xff0c;只能在Vue环境下使用。 导包 //依赖于Vue <script src"./js/vue.js"></script> <script src"./js/elementui.js"></…