Spring Bean LifeCycle Bean生命周期
背景:一提到Bean的生命周期,想到的都是那张炒鸡长的图,跟本记不住。需要从宏观角度了解下,这部分看到了一篇不错的文章
1. Spring Bean 生命周期分为四个阶段

具体的源码见AbstractAutowireCapableBeanFactory.doCreateBean()
2. Spring Bean 生命周期扩展点

常用扩展点+生命周期四个阶段图示如下

3.常见问题
-
BeanFactory&ApplicationContext区别是啥?
BeanFactory表示提供和管理Bean实例的容器接口, 是一个基础框架。 调用getBean()时,默认懒加载?ApplicationContext但默认会在应用启用时,会实例化Bean?
ApplicationContext表示包含应用程序中所有信息、元数据、Bean的容器接口。它实现了BeanFactory,并添加了更多应用功能,比如:跟SpringAOP集成、面向应用层的特定上下Webxx。
ApplicationContext是BeanFactory的完整超集, 提供了更多应用功能,一般情况下用ApplicationContext。
-
BeanPostProcessor & BeanFactoryPostProcessor区别是啥?
这两者之间很相似,但有一个重要区别:BeanFactoryPostProcessor作用于Bean配置元数据, BeanPostProcessor作用于Bean实例??
BeanFactoryPostProcessor的一个典型应用场景是,Spring占位符替换,如:@Value标注的属性,它修改的是Bean Definition。
作用对象不同,调用时机也不一样。BeanFactoryPostProcessor作用于加载完Bean定义后,BeanPostProcessor则在Spring容器完成实例化后,初始化前后自定义一些处理逻辑。
参考资料:

浙公网安备 33010602011771号