相比之下,Spring容器中的bean的生命周期就显得相对复杂多了。正确理解Spring bean的生命周期非常重要,因为你或许要利用Spring提供的扩展点来自定义bean的创建过程。下图展示了bean装载到Spring应用上下文中的一个典型的生命周期过程。

正如你所见,在bean准备就绪之前,bean工厂执行了若干启动步骤。我们对上图进行详细描述:
1.Spring对bean进行实例化;
2.Spring将值和bean的引用注入到bean对应的属性中;
3.如果bean实现了BeanNameAware 接口,Spring将bean的ID传递给setBean-Name() 方法;
4.如果bean实现了BeanFactoryAware 接口,Spring将调用setBeanFactory() 方法,将BeanFactory容器实例传入;
5.如果bean实现了ApplicationContextAware 接口,Spring将调用setApplicationContext() 方法,将bean所在的应用上下文的引用传入进来;
6.如果bean实现了BeanPostProcessor 接口,Spring将调用它们的post-ProcessBeforeInitialization() 方法;
7.如果bean实现了InitializingBean 接口,Spring将调用它们的after-PropertiesSet() 方法。类似地,如果bean使用init-method 声明了初始化方法,该方法也会被调用;
8.如果bean实现了BeanPostProcessor 接口,Spring将调用它们的post-ProcessAfterInitialization() 方法;
9.此时,bean已经准备就绪,可以被应用程序使用了,它们将一直驻留在应用上下文中,直到该应用上下文被销毁;
10.如果bean实现了DisposableBean 接口,Spring将调用它的destroy() 接口方法。同样,如果bean使用destroy-method 声明了销毁方法,该方法也会被调用。
在Spring 4.0中,Spring框架的发布版本包括了20个不同的模块,每个模块会有3个JAR文件(二进制类库、源码的JAR文件以及JavaDoc的JAR文件)。

这些模块依据其所属的功能可以划分为6类不同的功能:

Spring远不是Spring框架所下载的那些。如果仅仅停留在核心的Spring框架层面,我们将错过Spring Portfolio所提供的巨额财富。整个Spring Portfolio包括多个构建于核心Spring框架之上的框架和类库。概括地讲,整个Spring Portfolio几乎为每一个领域的Java开发都提供了Spring编程模型。
本文来自电脑杂谈,转载请注明本文网址:
http://www.pc-fly.com/a/tongxinshuyu/article-78166-3.html
快乐一定要快乐
不能怠慢
为什么播到一半显示无法播放
想去又去不了的心情