文章目录
1.spring bean生命周期[面试常问]
- 1.实例化
- 2.属性赋值populate
- 3.初始化
- 4.使用中
- 5.销毁
可以对应人的一生
- 1.出生
- 2.登记身份证,姓名
- 3.成长接受教育
- 4.工作,作对社会有用的人
- 5.死亡,人死如灯灭,死前立遗嘱,死后要火化
2. Bean的分类
- 系统级Bean
- 实例化时机: ApplicationContext管理的Bean,容器初始化的时候就会完成系统级bean的实例化
- 自定义Bean
- 当使用到自定义Bean时,BeanFactory才会去实例化它们。
区别: BeanFactory和ApplicaitonContext
BeanFactory是一个相对原始的社会,ApplicaitonContext是一个相对发达健全
的社会。
3.Bean的详细生命周期
从BeanDefinition获取后,就可以对BeanFactory进行实例化,以及对Bean进行实例化。那么这个过程是如何的呢?
对上述图进行详细描述:
这个过程很哲学,像大自然一样自然!!!
在来看一下顺序的流程吧!
4.BeanFactoryPostProcessor接口和BeanPostProcessor接口有何不同?
1. 触发时间点不同:BeanFactoryPostProcessor在Bean的定义加载完成后,实例化Bean之前执行;
而BeanPostProcessor在Bean实例化后,初始化前后执行。
2. 处理对象不同:BeanFactoryPostProcessor处理的是Bean的定义信息,可以修改Bean的定义,
添加、删除Bean的定义等;而BeanPostProcessor处理的是Bean实例,可以对Bean实例进行修改、增强。
3. 执行顺序不同:BeanFactoryPostProcessor的执行优先于BeanPostProcessor。
4. 实现方式不同:BeanFactoryPostProcessor需要实现BeanFactoryPostProcessor接口,实现
postProcessBeanFactory方法;而BeanPostProcessor需要实现BeanPostProcessor接口,实现
postProcessBeforeInitialization和postProcessAfterInitialization方法。