美文网首页
Spring中bean的生命周期

Spring中bean的生命周期

作者: 小李不秃 | 来源:发表于2018-12-17 00:03 被阅读0次

        在Spring容器中,主要是对bean进行管理的,而我们创建的bean其实是有对应的生命周期,我们需要对这个生命周期有一个了解。其实Spring这个对bean的生命周期就是对传统的java的生命周期给复杂化一些。那下面我就了解下bean的生命周期。

bean的生命周期(网上的图)

            

bean的生命周期

        在Spring中bean的生命周期就像我们在上面的图片看到一样,加了一些过滤条件(黑色框的平时基本上不会用到)。那分别介绍下上面的流程

        1.Spring对bean进行实例化,调用bean的构造参数

        2.设置对象属性,调用bean的set方法,将属性注入到bean的属性中

        3.检查bean是否实现BeanNameAware、BeanFactoryAware、ApplicationContextAware接口,如果实现了这几个接口Spring会分别调用其中实现的方法。

            BeanNameAware:setBeanName(String name)方法,参数是bean的ID

            BeanFactoryAware:setBeanFactory(BeanFactory bf)方法,参数是BeanFactory容器

            ApplicationContextAware:setApplicationContext(ApplicationContext context)方法,参数是bean所在的引用的上下文,如果是用Bean工厂创建bean,那就可以忽略ApplicationContextAware

        4.如果bean是否实现BeanPostProcessor接口,Spring会在初始化方法的前后分别调用postProcessBeforeInitialization和postProcessAfterInitialization方法

        5.如果bean是否实现InitalizingBean接口,将调用afterPropertiesSet()方法

        6.如果bean声明初始化方法,也会被调用

        7.使用bean,bean将会一直保留在应用的上下文中,直到该应用上下文被销毁。

        8.检查bean是否实现DisposableBean接口,Spring会调用它们的destory方法

        9.如果bean声明销毁方法,该方法也会被调用

接下来我们看看代码:

实体类 TestBean

分别实现了BeanNameAware、BeanFactoryAware、ApplicationContextAware、InitalizingBean、DisposableBean接口

实体类

MySpringBeanPostProcessor实现了BeanPostProcessor接口        

MySpringBeanPostProcessor类

通过java配置对进行bean的创建,要注意一点我们要自定义初始化和销毁方法,需要在initMethod和destroyMethod两个方法分别写上对应的方法名。这个销毁方法需要注意,如果是和DisposableBean接口是同一个方法,那么只会执行一次。但如果两个不一样的方法,那么就会先执行DisposableBean的detroy方法,在执行自定义销毁方法。

AnimalConfig类

加载上下文应用

加载上下文

从输出结果,我们就可以清楚地看到整个bean的生命周期。

运行结果

        其实对于这一块,我们了解下就可以了,因为真正用到的话其实不多,但我们还是要清楚bean的生命周期,会对之后学习或者工作都会有很大的帮助。

相关文章

网友评论

      本文标题:Spring中bean的生命周期

      本文链接:https://www.haomeiwen.com/subject/qzsfkqtx.html