您的位置:首页 > 编程语言 > Java开发

Spring bean的生命周期

2017-07-21 16:11 621 查看
1. Spring对bean进行实例化,即相当于New Bean();

2. Spring将bean的属性值(如果有)和bean的引用(如果有)注入到bean对应的属性中;

3. 如果bean实现了BeanNameAware接口(Spring不推荐使用), 则Spring将bean的id传递给setBeanName(String name)方法,以方便在bean factory中知道bean的name;

4. 如果bean实现了BeanFactoryAware接口, Spring将调用setBeanFactory(BeanFactory beanFactory)方法, 将BeanFactory容器实例传入,以便bean能够通过BeanFactory容器中的相关beans;

5. 如果bean实现了ApplicationContextAware接口(Spring 推荐), Spring将调用setApplicationContext(ApplicationContext applicationContext)方法, 将bean所在的applicationContext的引用传入进来,以便bean能够通过applicationContext中的其他beans;

6. 如果bean实现了BeanPostProcessor接口, Spring将调用它们的postProcessBeforeInitialization(Object bean, String beanName)方法;

7. 如果bean实现了InitializingBean接口, Spring将调用它们的afterPropertiesSet()方法。 类似地, 如果bean使用init-method声明了初始化方法, 该方法也会被调用;

8. 如果bean实现了BeanPostProcessor接口, Spring将调用它们的postProcessAfterInitialization(Object bean, String beanName)方法;

9. 经过以上操作, bean一切已经准备就绪, 可以被应用程序使用了, bean将一直驻留在应用上下文中,直到该应用上下文(即applicationContext)被销毁;

10. 如果bean实现了DisposableBean接口, Spring将调用它的destroy()接口方法。 同样, 如果bean使用destroy-method声明了销毁方法, 该方法也会被调用。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  java spring