Bean的生命周期
1.实例化(当我们的程序加载beans.xml文件),把我们的bean(前提是scope=singlton)实例化到内存中
2.调用set方法设置属性
3.如果你事先了bean名字关注接口(BeanNameAware)则,可以通过setBeanName获取id号
4.如果你实现了beanFactory关注接口(BeanFactoryAware)
5.如果你实现了ApplicationContextAware接口,则调用setApplicationContext方法
6.如果bean和一个后置处理器关联了,则会自动调用postProcessBeforeInitialization方法
7.如果你实现了InitializingBean接口,则会调用afterPropertiesSet方法
8.如果自己在<bean init-method="init"/>则可以在bean中定义自己的初始化方法
9.如果bean和一个后置处理器关联了,则会自动调用postProcessAfterInitialization方法
10.使用我们的bean
11.容器关闭
12.可以通过实现DisposableBean接口来调用方法destory
13.可以在<bean destory-method="fun1" / >调用定制的销毁方法
小节:在实际开发中,往往没有用到这么多的过程,常见的是,1,2,6,9,10,11
问题:通过BeanFactory来获取bean对象,bean的生命周期是否和ApplicationContext是一样的吗?
不是一样的,bean在工厂中创建的生命周期会简单一些。