Spring对bean进行实例化,即相当于New Bean();
Spring将bean的属性值(如果有)和bean的引用(如果有)注入到bean对应的属性中;
如果bean实现了BeanNameAware接口(Spring不推荐使用), 则Spring将bean的id传递给setBeanName(String name)方法,以方便在bean factory中知道bean的name;
如果bean实现了BeanFactoryAware接口, Spring将调用setBeanFactory(BeanFactory beanFactory)方法, 将BeanFactory容器实例传入,以便bean能够通过BeanFactory容器中的相关beans;
如果bean实现了ApplicationContextAware接口(Spring 推荐), Spring将调用setApplicationContext(ApplicationContext applicationContext)方法, 将bean所在的applicationContext的引用传入进来,以便bean能够通过applicationContext中的其他beans;
如果bean实现了BeanPostProcessor接口, Spring将调用它们的postProcessBeforeInitialization(Object bean, String beanName)方法;
如果bean实现了InitializingBean接口, Spring将调用它们的afterPropertiesSet()方法。 类似地, 如果bean使用init-method声明了初始化方法, 该方法也会被调用;
如果bean实现了BeanPostProcessor接口, Spring将调用它们的postProcessAfterInitialization(Object bean, String beanName)方法;
经过以上操作, bean一切已经准备就绪, 可以被应用程序使用了, bean将一直驻留在应用上下文中,直到该应用上下文(即applicationContext)被销毁;
如果bean实现了DisposableBean接口, Spring将调用它的destroy()接口方法。 同样, 如果bean使用destroy-method声明了销毁方法, 该方法也会被调用。
Spring bean的生命周期
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。
推荐阅读更多精彩内容
- 转自:http://www.cnblogs.com/zrtqsk/p/3735273.html Spring作为当...
- 文章作者:Tyan博客:noahsnail.com | CSDN | 简书 3.8 Container Exten...
- 什么是bean的生命周期? Spring是一个容器, bean是存在于容器中被管理的对象。bean的生命周期就是指...