Bean 的生命周期

Bean 的生命周期

        ⽣命周期指的是⼀个对象从诞⽣到销毁的整个⽣命过程,我们把这个过程就叫做⼀个对象的⽣命周期.

        Bean 的⽣命周期分为以下 5 个部分:

1. 实例化(为Bean分配内存空间)

2. 属性赋值( Bean 注⼊和装配,⽐如 @AutoWired )

3. 初始化

        a. 执⾏各种通知,如 BeanNameAware ,BeanFactoryAware ,ApplicationContextAware 的接⼝⽅法.

        b. 执⾏初始化⽅法 

                ▪ xml定义 init-method

                ▪ 使⽤注解的⽅式 @PostConstruct 

               ▪ 执⾏初始化后置⽅法( BeanPostProcessor )

4. 使⽤ Bean

5. 销毁 Bean

        a. 销毁容器的各种⽅法,如 @PreDestroy ,DisposableBean 接⼝⽅法,destroymethod. 

        实例化和属性赋值对应构造⽅法和 setter ⽅法的注⼊.初始化和销毁是⽤户能⾃定义扩展的两个阶段,可以在实例化之后,类加载完成之前进⾏⾃定义"事件"处理.

执⾏流程如下图所示:

        

代码演示

@Component
public class BeanLife {private User user;/*** 实例化(为Bean分配内存空间)* */public BeanLife(){System.out.println("实例化 BeanLife 对象");}/*** 属性赋值(Bean注⼊和装配,⽐如 @AutoWired )* */@Qualifier("user")@Autowiredpublic void setUser(User user) {System.out.println("属性赋值");}/*** 初始化* */@PostConstructpublic void init(){System.out.println("初始化");}/*** 使⽤ Bean* */public void use(){System.out.println("执行了 use 方法");}/*** 销毁 Bean* */@PreDestroypublic void preDestroy(){System.out.println("销毁了 Bean ");}}

执行结果

        根据执行结果可以看出,在 tomcat 启动之前,就已经做好了 1.实例化 2.属性赋值 和 3.初始化的工作

        在 tomcat 启动以后就开始使用 Bean ,使用好以后,结束程序,就销毁了 Bean 对象

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

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Java:Arrays类、Lambda表达式、JDK新特性(方法引用) --黑马笔记

一、Arrays类 1.1 Arrays基本使用 Arrays是操作数组的工具类,它可以很方便的对数组中的元素进行遍历、拷贝、排序等操作。 下面我们用代码来演示一下:遍历、拷贝、排序等操作。需要用到的方法如下: public class ArraysTest1 {public stat…

036 冒泡排序

代码实践 // 冒泡排序 static void bubbleSort(Comparable[] elements) {// 临时容器&#xff0c;用于变量交换值时存储Object temp;// 标志位 用于减少无意义的循环次数boolean flag;for (int i 0; i < elements.length - 1; i) {flag false;for (int j 0; j < elem…

低代码开发的数字化革新:实业界的成功秘诀与实践之路

在信息时代&#xff0c;实业界正迎来一场变革的风暴&#xff0c;传统的管理系统逐渐不再满足越来越复杂的生产流程和不断增长的市场需求&#xff0c;而低代码开发正如一颗璀璨的明星&#xff0c;将为企业带来前所未有的灵活性和创新力&#xff0c;这并非一场技术的简单变迁&…

洗地机买什么品牌好?最好的洗地机品牌

对于双职工家庭来说&#xff0c;日常家务活是一个很大的难题。所以就要借助洗地机来提升生活质量&#xff0c;确实智能家电能够帮助日常家务减负。市面上的洗地机的品牌是真的很多&#xff0c;笔者今天带大家一起来看看什么洗地机品牌好用。 该如何挑选适合自己的家用洗地机 …

鸿蒙(HarmonyOS)项目方舟框架(ArkUI)之AlphabetIndexer组件

鸿蒙&#xff08;HarmonyOS&#xff09;项目方舟框架&#xff08;ArkUI&#xff09;之AlphabetIndexer组件 一、操作环境 操作系统: Windows 10 专业版、IDE:DevEco Studio 3.1、SDK:HarmonyOS 3.1 二、AlphabetIndexer组件 可以与容器组件联动用于按逻辑结构快速定位容器显…

【EAI 013】BC-Z: Zero-Shot Task Generalization with Robotic Imitation Learning

论文标题&#xff1a;BC-Z: Zero-Shot Task Generalization with Robotic Imitation Learning 论文作者&#xff1a;Eric Jang, Alex Irpan, Mohi Khansari, Daniel Kappler, Frederik Ebert, Corey Lynch, Sergey Levine, Chelsea Finn 论文原文&#xff1a;https://arxiv.org…

ChatGpt报错:We ran into an issue while authenticating you解决办法

在登录ChatGpt时报错&#xff1a;Oops&#xff01;,We ran into an issue while authenticating you.(我们在验证您时遇到问题)&#xff0c;记录一下解决过程。 完整报错&#xff1a; We ran into an issue while authenticating you. If this issue persists, please contact…

ftp 指令连接服务器没反应怎么办?

当我们使用FTP指令连接服务器时&#xff0c;有时可能会遇到没有反应的情况。这可能是由多种原因引起的&#xff0c;下面我们将探讨一些常见的解决方法。 1、检查FTP服务器的地址和端口是否正确 确保您输入的服务器地址和端口号与FTP服务器的实际设置相匹配。如果地址或端口错误…

微信小程序(四十一)wechat-http的使用

注释很详细&#xff0c;直接上代码 新增内容&#xff1a; 1.模块下载 2.模块的使用 在终端输入npm install wechat-http 没有安装成功vue的先看之前的一篇 微信小程序&#xff08;二十&#xff09;Vant组件库的配置- 如果按以上的成功配置出现如下报错先输入以下语句 npm co…

2024-02-11 Unity 编辑器开发之编辑器拓展2 —— 自定义窗口

文章目录 1 创建窗口类2 显示窗口3 窗口事件回调函数4 窗口中常用的生命周期函数5 编辑器窗口类中的常用成员6 小结 1 创建窗口类 ​ 当想为 Unity 拓展一个自定义窗口时&#xff0c;只需实现继承 EditorWindow 的类即可&#xff0c;并在该类的 OnGUI 函数中编写面板控件相关的…

【数据结构】双向链表(链表实现+测试+原码)

前言 在双向链表之前&#xff0c;如果需要查看单链表来复习一下&#xff0c;链接在这里&#xff1a; http://t.csdnimg.cn/Ib5qS 1.双向链表 1.1 链表的分类 实际中链表的结构非常多样&#xff0c;以下情况组合起来就有8种链表结构&#xff1a; 1.1.1 单向或者双向 1.1.2 …

Redis集群模型

主从 全量同步 增量同步 哨兵 分片集群