Bean的生命周期

简单来说,bean的生命周期为:创建→注入→初始化→返回→销毁

一、代码过程参考#

//org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean()
protected Object doCreateBean(String beanName, RootBeanDefinition mbd, @Nullable Object[] args) throws BeanCreationException {
        // .............
        if (instanceWrapper == null) {
            // 创建bean
            instanceWrapper = this.createBeanInstance(beanName, mbd, args);
        }
		// .............
        try {
            // 注入bean
            this.populateBean(beanName, mbd, instanceWrapper);
            // 初始化bean
            exposedObject = this.initializeBean(beanName, exposedObject, mbd);
        } catch (Throwable var18) {
           // ............
        }
		// 返回bean
}

二、详细过程#

1.创建bean#

​ 构造bean,相当于是new一个对象的过程

2.注入bean#

​ 通过name或者type进行注入,检查并满足依赖,设置属性值

3.初始化bean#

  1. 注入aware接口

    检查是否实现了aware接口,然后分别进行对象名的设置,类加载器的设置,beanFactory的实例引用

  2. 后处理器的前置处理

    可以重写postProcessBeforeInitialization,在bean初始化之前进行一些处理

  3. 调用初始化方法

    对实现了InitializingBean接口的bean执行afterPropertiesSet方法,在属性设置完成之后的处理

  4. 后处理器的后置处理

    重写postProcessAfterInitialization,对已经初始化的bean做后续的处理

4.设置bean的管理#

​ 如果bean的作用域为singleton,则交付bean给spring的IOC容器进行管理,如果是prototype,则让调用者去管理bean的生命周期

5.返回bean#

三、图示#

posted @   醉千灯  阅读(68)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
点击右上角即可分享
微信分享提示
主题色彩