前言

为了巩固所学的知识,作者尝试着开始发布一些学习笔记类的博客,方便日后回顾。当然,如果能帮到一些萌新进行新技术的学习那也是极好的。作者菜菜一枚,文章中如果有记录错误,欢迎读者朋友们批评指正。
(博客的参考源码以及可以在我主页的资源里找到,如果在学习的过程中有什么疑问欢迎大家在评论区向我提出)

1. 理解bean的生命周期

2. Bean 生命周期的执行过程

Spring Bean的生命周期-LMLPHP

3. Bean生命周期控制入门案例

1. 编写代码(IOC 和 DI入门案例的代码,模块名为respr_ioc)

  • 在BookDaoImpl实现类中定义代表创建bena初始化和销毁的方法
package org.example.dao.impl;

import org.example.dao.BookDao;

public class BookDaoImpl implements BookDao {
    public void save() {
        System.out.println("book dao save ...");
    }
    //表示bean初始化对应的操作
    public void init(){
        System.out.println("init...");
    }
    //表示bean销毁前对应的操作
    public void destory(){
        System.out.println("destory...");
    }
}

2. 在applicationContext.xml文件中配置BookDao bean 的 初始化方法 int-method 和销毁方法 destory-method

Spring Bean的生命周期-LMLPHP

3. 将BookService的代码注释掉,运行模拟测试类,观察BookDao bean的创建和销毁过程

Spring Bean的生命周期-LMLPHP
4. 观察运行结果

Spring Bean的生命周期-LMLPHP

5. 简要分析

4. 关闭IOC容器的两种方式

1. 关闭ioc容器的代码及运行结果如下

Spring Bean的生命周期-LMLPHP

2. 关闭ioc容器的第二种方式:关闭钩子(概念、代码及运行结果如下)

Spring Bean的生命周期-LMLPHP

3. 两种关闭ioc容器的简要分析

5. 通过继承接口绑定生命周期方法

1. 绑定销毁方法和初始化方法的改进–继承接口(以BookServiceImpl为例)

public class BookServiceImpl implements BookService, InitializingBean, DisposableBean {
    private BookDao bookDao;

    public void setBookDao(BookDao bookDao) {
        this.bookDao = bookDao;
    }

    public void save() {
        System.out.println("book service save ...");
        bookDao.save();
    }

    public void destroy() throws Exception {
        System.out.println("service destroy");
    }

    public void afterPropertiesSet() throws Exception {
        System.out.println("service init");
    }
}

2. 模拟测试类Main2运行结果

Spring Bean的生命周期-LMLPHP

总结

欢迎各位留言交流以及批评指正,如果文章对您有帮助或者觉得作者写的还不错可以点一下关注,点赞,收藏支持一下。
(博客的参考源码可以在我主页的资源里找到,如果在学习的过程中有什么疑问欢迎大家在评论区向我提出)

07-25 16:40