Spring Bean的生命周期

        Spring Bean的生命周期总的来说分为四个阶段:

                1.实例化

                2.属性赋值

                3.初始化

                4.销毁

以下是部分源码解析以及运行结果:

1.目录

2.UserDao

3.MyBeanPostProcessor.java

4.applicationContext.xml

5.test测试

6.运行结果

运行结果:
    1:调用构造函数UserDao()
    2:注入属性userName=zhangsan
    3:调用setBeanName()获取bean id,bean id=dao
    :调用setBeanFactory()获取bean工厂
    5:调用setApplicationContext()获取bean上下文
    =====调用postProcessBeforeInitialization()=====
    6:调用afterPropertiesSet()
    7:调用自定义myInit()
    =====调用postProcessAfterInitialization()=====
    8.destroy()
    9.我销毁了

一、实例化

        1.将Spring进行启动,查找并加载需要被Spring管理的bean,进行Bean的实例化,实例化阶段主要是通过反射去创建bean实例对象;

    1:调用构造函数UserDao()

二、属性赋值

        2.Bean实例化后对将Bean的引入和值注入到Bean的属性中,实际上就是对已经实例化了的bean对象进行属性值的设定;

2:注入属性userName=zhangsan

三、实现Aware接口

        3.如果Bean实现了BeanNameAware接口,则执行setBeanName方法,Spring通过调用Bean的setBeanName()方法传入当前Bean的id值;

3:调用setBeanName()获取bean id,bean id=dao

        4..如果Bean实现了BeanClassLoaderAware接口,则执行setBeanClassLoader方法,传入classLoader的引用;

        5..如果Bean实现了BeanFactoryAware接口,则执行setBeanFactory方法,传入当前工厂实例的引用;

4:调用setBeanFactory()获取bean工厂

        6.如果Bean实现了ApplicationContextAware接口,则执行setApplicationContext方法;

5:调用setApplicationContext()获取bean上下文

三、初始化

        7.如果加载了BeanPostProcessor接口,Spring就会执行postProcessBeforeInitialization()方法;

=====调用postProcessBeforeInitialization()=====

        8.如果定义了初始化的方法,则会执行初始化方法;

6:调用afterPropertiesSet()
7:调用自定义myInit()

        9.如果加载了BeanPostProcessor相关实现类,则执行postProcessAfterInitialization方法;

=====调用postProcessAfterInitialization()=====

四、销毁

        10.如果bean实现了DisposableBean接口,Spring将调用它的destory()接口方法,如果自定义了销毁方法,则会调用destroy-method这个方法进行销毁。

8.destroy()
9.我销毁了

五、SpringBean的生命周期流程图如下:

        

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值