文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

深入理解 Java Bean 的生命周期及各个阶段解析

2023-08-16 14:12

关注

引言:

Java Bean是Java编程中经常使用的重要概念,它是可重用、可移植、可序列化的组件。在Java开发中,我们常常会遇到Bean对象,但是对于Bean的生命周期和各个阶段可能并不完全了解。本文将深入探讨Java Bean的生命周期,逐步解析Bean对象从创建到销毁的各个重要阶段。

一、什么是Java Bean

Java Bean是一个符合特定规范的Java类,通常具有私有的成员变量、公共的getter和setter方法,以及一个无参构造函数。这些特性使得Bean对象易于序列化和反序列化,并且被广泛应用于Java开发中,尤其在框架和应用程序中经常被用作数据封装和组件复用。

二、Bean的生命周期概述

Java Bean的生命周期从创建到销毁可以分为以下五个关键阶段:

  1. 创建阶段(实例化 Bean):当使用构造函数或者工厂方法创建Bean对象时,就进入了创建阶段。

  2. 属性设置阶段:在Bean对象创建后,通过setter方法设置Bean的各个属性。

  3. 初始化阶段:当Bean的属性设置完成后,会触发初始化回调方法,进行一些额外的初始化工作。

    • 实现了各种 Aware 通知的⽅法,如 BeanNameAware、BeanFactoryAware、
      ApplicationContextAware 的接⼝⽅法
    • 执⾏ BeanPostProcessor 初始化前置⽅法
    • 执⾏ @PostConstruct 初始化⽅法,依赖注⼊操作之后被执⾏
    • 执⾏⾃⼰指定的 init-method ⽅法
    • 执⾏ BeanPostProcessor 初始化后置⽅法
  4. 使用阶段:在初始化完成后,Bean对象处于可用状态,可以供应用程序使用。

  5. 销毁阶段:当Bean对象不再需要时,会触发销毁回调方法,进行资源释放等清理工作,销毁容器的各种⽅法,如 @PreDestroy、DisposableBean 接⼝⽅法、destroy-method

@PostConstruct 用于在 bean 初始化之后执行特定的方法。标记了 @PostConstruct 注解的方法会在 bean 的依赖注入完成后立即执行。通常在这个方法内进行一些初始化操作,例如数据库连接的建立或资源的加载。
@PreDestroy 用于在 bean 销毁之前执行特定的方法。
标记了 @PreDestroy 注解的方法会在容器或应用程序关闭或 bean 被销毁前调用,用于清理资源,例如关闭数据库连接或释放文件句柄等。

流程如下图:
在这里插入图片描述

我们可以以生活中的场景来理解Bean的生命周期
比如我们现在结婚都需要买新房,那么从买房子到使用还需要这样一段流程:

  1. 先交钱买房子(实例化)
  2. 装修 (设置属性)
  3. 给家里添置各种家具(初始化)
  4. 进行入住(使用Bean)
  5. 用够70年然后交还(销毁)
    通过这样的案例我们应该能更好的理解Bean的生命周期

三、Bean的创建阶段

在Bean的创建阶段,可以通过构造函数或者工厂方法来创建Bean对象。构造函数用于创建对象的实例,而工厂方法则通过调用静态方法来获取Bean的实例。在创建阶段,还可以利用依赖注入(DI)等技术,将依赖的对象传递给Bean。

// 示例1:使用构造函数创建Bean对象public class Person {    private String name;    private int age;    public Person(String name, int age) {        this.name = name;        this.age = age;    }    // getter和setter方法省略}// 示例2:使用工厂方法创建Bean对象public class BeanFactory {    public static Person createPerson(String name, int age) {        return new Person(name, age);    }}

四、属性设置阶段

在创建Bean对象后,我们通常会通过setter方法来设置Bean的各个属性。这些属性可以是基本数据类型、引用类型,甚至是其他的Bean对象。属性设置阶段是为了确保Bean对象在初始化之前具备正确的状态。

// 示例:设置Bean的属性Person person = new Person();person.setName("John Doe");person.setAge(30);

初始化阶段

当Bean的属性设置完成后,将会触发初始化回调方法。在Java中,我们常常会使用@PostConstruct注解或者实现InitializingBean接口来指定初始化回调方法。在初始化阶段,可以进行一些额外的初始化工作,如连接数据库、加载配置等。

public class MyBean {    @PostConstruct    public void init() {        // 执行初始化操作,例如初始化数据库连接等    }}

六、使用阶段

初始化完成后,Bean对象处于可用状态,可以供应用程序使用。在使用阶段,Bean可能会被注入到其他组件中,执行业务逻辑等。

public class UserService {    private UserDao userDao;    // 通过依赖注入注入UserDao对象     @Autowired    public UserService(UserDao userDao) {        this.userDao = userDao;    }    // 执行业务逻辑,使用userDao对象    // ...}

七、销毁阶段

当Bean对象不再需要时,会触发销毁回调方法。在Java中,我们可以使用@PreDestroy注解或者实现DisposableBean接口来指定销毁回调方法。在销毁阶段,可以进行一些资源释放和清理工作,如关闭数据库连接、释放文件资源等。

public class MyBean {    @PreDestroy    public void destroy() {        // 执行销毁操作,例如关闭数据库连接等    }}

结论:
Java Bean的生命周期是一个重要的概念,在Java开发中经常会遇到。通过本文的介绍,我们了解了Bean从创建到销毁的各个阶段,包括创建阶段、属性设置阶段、初始化阶段、使用阶段和销毁阶段。深入理解Bean的生命周期有助于更好地管理Bean对象,确保其状态正确、行为可靠,并且能够优化资源的利用。

来源地址:https://blog.csdn.net/st200112266/article/details/132051934

阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     807人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     351人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     314人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     433人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     221人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-后端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯