美文网首页spring总结篇
Spring总结篇(3):bean生命周期

Spring总结篇(3):bean生命周期

作者: 唐伟耀 | 来源:发表于2018-05-03 22:31 被阅读0次

1.利用ApplicationContext来获取bean对象,bean的生命周期

当bean被载入容器时,他的生命周期就开始了。

(1)实例化

当我们加载bean.xml文件时,就开始实例化了,实例化到内存,前提是scope=singleton)---当实例化时,构造方法先被调用)

(2)设置属性(前提是要有一个对应的set方法)

调用set方法设置属性

(3)调用BeanNameAware的setBeanName()方法

如果你实现了BeanNameAware接口,则可以通过setBeanName来获取bean的id

(4)调用BeanFactoryAware的setBeanFactory()方法

该方法可以传递beanFactory,如果你实现BeanNameAware接口,则可以获取beanFactory

(5)调用ApplicationContextAware的setApplicationContext()方法

如果你实现ApplicationContextAware接口,则可以得到ApplicationContext

(6)若BeanPostProcessor(后置处理器,具体介绍在下面)和bean关联后(关联:先建一个类myBeanPostProcessor来实现BeanPostProcessor,再在beans.xml配置一下)

postProcessBeforeInitialzation()方法先被调用。(预初始化方法)

(7)若你实现了InitializingBean接口,则会调用afterPropertiesSet

(8)调用定制的初始化方法,在beans.xml文件bean中写

(9)调用后初始化方法postProcessAtfterInitialzation()

(10)使用我们的bean

(11)容器关闭

(12)调用DisposableBean接口的destory()方法

包括关闭数据连接、socket、文件流释放bean占用的资源,不习惯用

(13)第12步的方法少用,经常用自己定制的销毁方法,在beans.xml中设置

原理图:


2.关于BeanPostProcessor(后置处理器)

--在用后置处理器时,我们可以建一个类myBeanPostProcessor来实现BeanPostProcessor,其中有两个方法before、after

--在beans.xml配置一下,就会被自动调用,先是before()再是after()

--BeanPostProcessor有点类似于web里的filter过滤器

--需求应用:1.记录每个对象被实例化的时间

                    2.过滤每个调用对象的ip

                    3.给所有对象添加属性

--这些应用体现了AOP编程(面向切面编程,针对所有对象编程)


3.小结

实际开发中没用到这么多过程,则常用的过程为:1>2>6>9>10>11>13


4.通过bean工厂来获取bean,bean的生命周期

1>2>3>4>7>8>10>11>12>13


5.代码实现

userService

userService

myBeanPostProcessor

myBeanPostProcessor

beans.xml

beans.xml

testBean

testBean

6.结果现象

相关文章

网友评论

    本文标题:Spring总结篇(3):bean生命周期

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